SQLite strftime()
Funkce umožňuje vrátit hodnotu data a času v určeném formátu.
Skutečná vrácená hodnota data/času je založena na časovém řetězci, který zadáte jako argument při volání funkce, a také na všech modifikátorech, které zahrnete (jako volitelné argumenty). Modifikátor vám umožňuje změnit datum, například přidat počet dní, nastavit jej na místní čas atd
Syntaxe
Syntaxe vypadá takto:
strftime(format, timestring, modifier, modifier, ...)
format
argument může být libovolná kombinace platných náhrad formátovacích řetězců pro strftime()
funkce.
timestring
argument musí být platný časový řetězec.
modifier
argumenty jsou volitelné. Můžete poskytnout jeden nebo více modifikátorů. Pokud zadáte modifikátor, musí to být platný modifikátor.
Příklad
Zde je příklad k demonstraci.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
Výsledek:
2020-04-29 01:29:54
now
časový řetězec se převede na aktuální datum a čas na základě poskytnutého formátovacího řetězce.
V tomto případě můj formátovací řetězec vrátí přesně stejný výsledek jako datetime('now')
by se vrátil.
Přidat modifikátor
Předchozí výsledek můžeme upravit pomocí modifikátoru. Zde je příklad.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours');
Výsledek:
2020-04-29 03:31:50
V tomto případě jsem přidal dvě hodiny k času.
Více modifikátorů
Můžete přidat více modifikátorů. Zde je příklad přidání dalšího modifikátoru k předchozímu příkladu.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');
Výsledek:
2020-04-29 13:33:22
V mém případě localtime
modifikátor vedl k posunutí času dopředu.
Důvodem je localtime
modifikátor předpokládá, že zadaný časový řetězec je v Universal Coordinated Time (UTC). Poté upraví časový řetězec tak, aby zobrazoval místní čas.
V závislosti na místním čase můžete získat jiný výsledek.
Zde jde opět o porovnání původního místního času s upraveným výsledkem:
SELECT
strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime') AS "Local",
strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime') AS "Modified";
Výsledek:
Local Modified ------------------- ------------------- 2020-04-29 11:34:57 2020-04-29 13:34:57
Čas Unix/Epocha
Můžete použít %s
formátovací řetězec (malá písmena) pro výpočet doby epochy.
SELECT strftime('%s', 'now');
Výsledek:
1588124826
Epoch time (také známý jako Epoch time, POSIX time, sekundy od Epoch, nebo UNIX Epoch time) je počet sekund od 1970-01-01.
Unixový čas je široce používán v operačních systémech a formátech souborů.
Juliánský den
Můžete použít %J
vrátit Juliánský den.
Juliánský den je počet dní od poledne v Greenwichi 24. listopadu 4714 př. (pomocí proleptického gregoriánského kalendáře).
Pokud používáte proleptický juliánský kalendář, je to pondělí 1. ledna 4713 př.nl.
Juliánský den je obvykle používán astronomy, softwarem atd. k výpočtu dnů uplynulých mezi dvěma událostmi.
Zde je návod, jak vrátit Juliánský den pomocí strftime()
funkce.
SELECT strftime('%J', 'now');
Výsledek:
2458968.575441667
Dalším způsobem, jak toho dosáhnout v SQLite, je použít julianday()
funkce.
Časové období
Stejně jako u všech funkcí data a času SQLite, strftime()
funguje pouze pro data mezi 0000-01-01 00:00:00 a 9999-12-31 23:59:59 (čísla juliánského dne 1721059,5 až 5373484,5).
Pro data mimo tento rozsah nejsou výsledky definovány.