sql >> Databáze >  >> RDS >> SQLite

Jak funguje funkce Strftime() v SQLite

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.


  1. Jak spustit nezpracovaný SQL v SQLAlchemy

  2. Jak přidám primární klíč auto_increment do databáze SQL Server?

  3. Skriptujte celou databázi SQL-Server

  4. Proč dotaz Microsoft SQL Server 2012 trvá několik minut oproti JDBC 4.0, ale sekundy v Management Studio?