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

Funkce data a času SQLite

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                   

  1. Zobrazit hodnoty z tabulky databáze MySQL v tabulce HTML na webové stránce

  2. PostgreSQL dotaz velmi pomalý s limitem 1

  3. Vložit DML s proměnnou Bind:POUŽITÍ doložky o provedení okamžitého prohlášení

  4. Jak mohu zadat jeden příkaz z příkazového řádku přes sql plus?