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

Jak funguje funkce DateTime() v SQLite

SQLite datetime() Funkce vám umožňuje vrátit hodnotu data a času na základě časového řetězce a jakýchkoli modifikátorů.

Vrací datum v tomto formátu:RRRR-MM-DD HH:MM:SS

Chcete-li použít tuto funkci, musíte zadat časový řetězec a jakékoli (volitelné) modifikátory. 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:

datetime(timestring, modifier, modifier, ...)

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 demonstrující datetime() funkce se používá s jedním argumentem.

SELECT datetime('now');

Výsledek:

2020-04-28 23:56:06

now časový řetězec se převede na aktuální datum a čas.

Přidat modifikátor

Předchozí výsledek můžeme upravit pomocí modifikátoru. Zde je příklad.

SELECT datetime('now', '+3 hours');

Výsledek:

2020-04-29 02:56:52

V tomto případě jsem k času přidal tři hodiny. Vzhledem k původnímu času to také vedlo k posunutí data dopředu na další den.

Více modifikátorů

Jak již bylo zmíněno, můžete přidat jeden nebo více modifikátorů. Zde je příklad přidání dalšího modifikátoru k předchozímu příkladu.

SELECT datetime('now', '+3 hours', 'localtime');

Výsledek:

2020-04-29 12:58:13

V mém případě localtime modifikátor vedl k posunutí času dopředu.

Důvodem, proč to dělá, 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.

Proto můžete získat jiný výsledek v závislosti na vašem místním čase.

Zde je opět porovnání původního místního času s upraveným výsledkem:

SELECT 
  datetime('now', 'localtime') AS "Local",
  datetime('now', '+3 hours', 'localtime') AS "Modified";

Výsledek:

Local                Modified           
-------------------  -------------------
2020-04-29 10:02:09  2020-04-29 13:02:09

Datum jako časový řetězec

Výše uvedené příklady používají now jako časový řetězec, ale můžete zadat jakýkoli platný časový řetězec.

Pokud zadáte pouze část data, časová část bude nastavena na všechny nuly.

SELECT datetime('2010-08-15');

Výsledek:

2010-08-15 00:00:00

Pokud je uvedena pouze časová část, pak je datum nastaveno na 2000-01-01.

SELECT datetime('23:58:57');

Výsledek:

2000-01-01 23:58:57

Zde je příklad, který používá Juliánský den jako časový řetězec.

SELECT datetime('2451545.49927083');

Výsledek:

2000-01-01 23:58:57

datetime() vs strftime()

datetime() funkce vrací přesně stejný výsledek jako strftime('%Y-%m-%d %H:%M:%S', ...) se vrací. datetime() funkce je jen pohodlnější způsob, jak to udělat.

SELECT 
  datetime('now'),
  strftime('%Y-%m-%d %H:%M:%S', 'now');

Výsledek:

datetime('now')      strftime('%Y-%m-%d %H:%M:%S', 'now')
-------------------  ------------------------------------
2020-04-29 00:16:12  2020-04-29 00:16:12                 

Časové období

Stejně jako u všech funkcí data a času SQLite, datetime() 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. SQL HAVING doložka pro začátečníky

  2. Podmínka počtu PostgreSQL Where

  3. NEJLEPŠÍ NOVINKY:Vydán nový nativní klient Microsoft SQL Server 18!

  4. Rychle vložte 2 miliony řádků do SQL Serveru