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