SQLite podporuje pět funkcí pro práci s daty a časy. Jsou to:
date()time()datetime()julianday()strftime()
Všechny tyto funkce přijímají jako argument časový řetězec. Přijímají také další argumenty pro úpravu/formátování výstupu.
strftime() funkce je nejuniverzálnější funkcí z pěti. Ve skutečnosti tato funkce umí vše, co ostatní čtyři.
Jinými slovy, můžete použít strftime() pro všechny vaše požadavky na formátování data a času. Další čtyři funkce jsou k dispozici pouze pro pohodlí.
Syntaxe
Syntaxe každé funkce je následující:
date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...) V prvních čtyřech funkcích je prvním argumentem časový řetězec a všechny následující argumenty jsou modifikátory.
V strftime() první argument je formátovací řetězec, za ním následuje časový řetězec a případné modifikátory.
Všechny platné časové řetězce a modifikátory jsou uvedeny v dolní části tohoto článku.
Nejprve si však projdeme několik rychlých příkladů každé z těchto funkcí.
Funkce date()
Můžete použít date() funkce s jedním argumentem nebo s více argumenty.
Zde je příklad s jediným argumentem:
SELECT date('now'); Výsledek:
2020-04-23
Zde je příklad, který používá modifikátor:
SELECT date('now', 'localtime'); Výsledek:
2020-04-24
V tomto případě jsem použil localtime modifikátor. Tento modifikátor předpokládá, že časový řetězec je v Universal Coordinated Time (UTC) a upravuje časový řetězec tak, aby zobrazoval místní čas.
Funkce time()
time() funkce je podobná funkci date() funkce, s tou výjimkou, že namísto data vydává čas.
Zde je příklad:
SELECT time('now'); Výsledek:
00:02:05
A tady je to s localtime modifikátor:
SELECT time('now', 'localtime'); Výsledek:
10:02:09
Funkce datetime()
SQLite datetime() funkce kombinuje předchozí dvě funkce v tom smyslu, že vydává datum i čas.
Zde je příklad:
SELECT datetime('now'); Výsledek:
"2020-04-24 00:04:13"
A tady je to s localtime modifikátor:
SELECT datetime('now', 'localtime'); Výsledek:
"2020-04-24 10:04:46"
Funkce julianday()
julianday() funkce vrací nepřetržitý počet dní od začátku juliánského období, což je pondělí 1. ledna 4713 př. n. l., proleptický juliánský kalendář (24. listopad 4714 př. n. l. v proleptickém gregoriánském kalendáři).
Zde je návod, jak to vypadá pomocí now jako časový řetězec:
SELECT julianday('now'); Výsledek:
2458963.50964815
A zde se používá localtime modifikátor:
SELECT julianday('now', 'localtime'); Výsledek:
2458963.92637685
Funkce strftime()
Jak již bylo zmíněno, strftime() funkci lze použít k výstupu hodnot data a času v jakémkoli z formátů dostupných v předchozích funkcích.
Tato funkce vám umožňuje velmi přesně určit, jak jsou formátovány hodnoty data/času. Umožňuje vám poskytnout přesný formát, který chcete, aby byl prezentován.
Syntaxe této funkce vypadá takto:
strftime(format, timestring, modifier, modifier, ...)
Všimněte si, že první argument je format . Zde zadáte formát, ve kterém chcete mít časový řetězec na výstupu.
Formátovací řetězec pro strftime() může sestávat z kterékoli z následujících substitucí:
| %d | Den v měsíci:00 |
| %f | Zlomkové sekundy:SS.SSS |
| %H | Hodina:00-24 |
| %j | Den v roce:001-366 |
| %J | Číslo juliánského dne |
| %m | Měsíc:01-12 |
| %M | Minuta:00-59 |
| %s | Sekundy od 1. 1. 1970 |
| %S | Sekundy:00–59 |
| %w | Den v týdnu 0-6 s nedělí==0 |
| %W | Týden v roce:00–53 |
| %Y | Rok:0000-9999 |
| %% | % |
Zde je příklad:
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now'); Výsledek:
"2020-04-24 00:43:51"
V tomto případě dostaneme stejný výsledek jako při použití datetime() funkce.
Tady je to s localtime modifikátor:
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime'); Výsledek:
"2020-04-24 10:45:27"
Opět stejný výsledek jako u datetime() . Rozdíl je v strftime() nám umožňuje explicitně specifikovat formát výstupu.
Například:
SELECT strftime('%d/%m/%Y %H:%M:%S', 'now', 'localtime');
SELECT strftime('%m/%d/%Y (%H:%M:%S)', 'now', 'localtime');
SELECT strftime('%H:%M:%S on %d/%m/%Y', 'now', 'localtime'); Výsledek:
"24/04/2020 10:49:41" "04/24/2020 (10:52:24)" "10:51:13 on 24/04/2020"
Platné formáty časových řetězců
Argument časového řetězce ve všech funkcích datum/čas lze dodat v kterémkoli z následujících formátů:
- RRRR-MM-DD
- RRRR-MM-DD HH:MM
- RRRR-MM-DD HH:MM:SS
- RRRR-MM-DD HH:MM:SS.SSS
- RRRR-MM-DDTHH:MM
- RRRR-MM-DDTHH:MM:SS
- RRRR-MM-DDTHH:MM:SS.SSS
- HH:MM
- HH:MM:SS
- HH:MM:SS.SSS
- teď
- DDDDDDDDDD
Platné modifikátory
S funkcemi data/času můžete použít kterýkoli z následujících modifikátorů:
- NNN dny
- NNN hodin
- NNN minut
- NNN.NNNN sekund
- NNN měsíců
- NNN roky
- začátek měsíce
- začátek roku
- začátek dne
- pracovní den N
- unixepoch
- místní čas
- utc
N odkazuje na číslo, které je přidáno k datu na základě zadané jednotky.
Například:
SELECT
date('now'),
date('now', '3 days'); Výsledek:
date('now') date('now', '3 days')
----------- ---------------------
2020-04-24 2020-04-27
Zde je jeden, který používá start of month jako modifikátor:
SELECT
date('now'),
date('now', 'start of month'); Výsledek:
date('now') date('now', 'start of month')
----------- -----------------------------
2020-04-24 2020-04-01