sql >> Database teknologi >  >> RDS >> SQLite

Sådan fungerer DateTime()-funktionen i SQLite

SQLite datetime() funktionen giver dig mulighed for at returnere en dato- og tidsværdi baseret på en tidsstreng og eventuelle modifikatorer.

Den returnerer datoen i dette format:ÅÅÅÅ-MM-DD TT:MM:SS

For at bruge denne funktion skal du angive en tidsstreng plus eventuelle (valgfri) modifikatorer. En modifikator giver dig mulighed for at ændre datoen, såsom tilføje et antal dage, indstille den til lokal tid osv.

Syntaks

Syntaksen ser sådan ud:

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

timestring argumentet skal være en gyldig tidsstreng.

modifier argumenter er valgfrie. Du kan angive en eller flere modifikatorer. Hvis du angiver en modifikator, skal den være en gyldig modifikator.

Eksempel

Her er et eksempel til at demonstrere datetime() funktion, der bruges med ét argument.

SELECT datetime('now');

Resultat:

2020-04-28 23:56:06

now tidsstrengen konverteres til den aktuelle dato og klokkeslæt.

Tilføj en modifikator

Vi kan ændre det tidligere resultat ved at bruge en modifikator. Her er et eksempel.

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

Resultat:

2020-04-29 02:56:52

I dette tilfælde tilføjede jeg tre timer til tiden. Givet det oprindelige tidspunkt resulterede dette også i, at datoen blev rykket frem til næste dag.

Flere modifikatorer

Som nævnt kan du tilføje en eller flere modifikatorer. Her er et eksempel på tilføjelse af en anden modifikator til det forrige eksempel.

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

Resultat:

2020-04-29 12:58:13

I mit tilfælde er localtime modifikator resulterede i, at tiden blev rykket frem.

Grunden til at det gør dette, er fordi localtime modifikator antager, at den angivne tidsstreng er i Universal Coordinated Time (UTC). Den justerer derefter tidsstrengen, så den viser lokal tid.

Derfor kan du få et andet resultat, afhængigt af din lokale tid.

Her sammenlignes igen den oprindelige lokale tid med det ændrede resultat:

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

Resultat:

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

Dato som tidsstreng

Ovenstående eksempler bruger now som tidsstreng, men du kan angive en hvilken som helst gyldig tidsstreng.

Hvis du kun angiver datodelen, vil tidsdelen blive sat til alle nuller.

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

Resultat:

2010-08-15 00:00:00

Hvis kun tidsdelen er leveret, så er datoen sat til 2000-01-01.

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

Resultat:

2000-01-01 23:58:57

Her er et eksempel, der bruger Julian Day som tidsstreng.

SELECT datetime('2451545.49927083');

Resultat:

2000-01-01 23:58:57

datetime() vs strftime()

datetime() funktion returnerer nøjagtigt det samme resultat som strftime('%Y-%m-%d %H:%M:%S', ...) vender tilbage. datetime() funktion er bare en mere bekvem måde at gøre det på.

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

Resultat:

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

Datointerval

Som med alle SQLite dato- og tidsfunktioner, datetime() virker kun for datoer mellem 0000-01-01 00:00:00 og 9999-12-31 23:59:59 (julian dag numre 1721059.5 til 5373484.5).

For datoer uden for dette interval er resultaterne udefinerede.


  1. Hvordan finder man afhængigheder inde i en oracle-pakke?

  2. Relation eksisterer ikke

  3. Kan jeg have en fremmednøgle, der refererer til en kolonne i en visning i SQL Server?

  4. Grundlæggende administration af Oracle 12c Multitenant