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

Jak funguje funkce Date() v SQLite

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

Vrátí datum v tomto formátu:RRRR-MM-DD

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 date() funkce vypadá takto:

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

SELECT date('now');

Výsledek:

2020-04-27

now časový řetězec se převede na aktuální datum a čas. Vzhledem k tomu, že používám date() funkce, vrátí se pouze datum.

Přidat modifikátor

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

SELECT date('now', '+6 months');

Výsledek:

2020-10-27

V tomto případě jsem k datu přidal šest měsíců.

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 date('now', '+6 months', 'localtime');

Výsledek:

2020-10-28

V mém případě localtime modifikátor vedl k přidání dne k datu.

Důvodem je to, že 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.

String Literal 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.

Zde je několik dalších příkladů.

SELECT date('2020-04-27 23:58:57');

Výsledek:

2020-04-27 

V tomto případě jednoduše odstraní časovou část z data.

Tady je to znovu, ale s některými modifikátory.

SELECT date('2020-04-27 23:58:57', 'start of year', '+6 months');

Výsledek:

2020-07-01 

V tomto případě jsem chtěl získat datum, které je 6 měsíců od začátku roku uvedeného data.

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

SELECT date('2458967.49737293');

Výsledek:

2020-04-27

date() vs strftime()

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

SELECT 
  date('now'),
  strftime('%Y-%m-%d', 'now');

Výsledek:

date('now')  strftime('%Y-%m-%d', 'now')
-----------  ---------------------------
2020-04-28   2020-04-28                 

Časové období

Stejně jako u všech funkcí data a času SQLite, date() 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 Atan() funguje v PostgreSQL

  2. Jak se používají databáze v elektronickém obchodu

  3. Jak zvýšit maximální počet připojení v PostgreSQL

  4. INSERT IGNORE vs INSERT ... PŘI AKTUALIZACI DUPLIKÁTNÍHO KLÍČE