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

Sådan fungerer Date()-funktionen i SQLite

SQLite har en date() funktion, der giver dig mulighed for at returnere en datoværdi baseret på en tidsstreng og eventuelle modifikatorer.

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

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 for date() funktionen går sådan her:

date(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 date() funktion, der bruges med ét argument.

SELECT date('now');

Resultat:

2020-04-27

now tidsstrengen konverteres til den aktuelle dato og klokkeslæt. Da jeg bruger date() funktion, returneres kun datoen.

Tilføj en modifikator

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

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

Resultat:

2020-10-27

I dette tilfælde tilføjede jeg seks måneder til datoen.

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

Resultat:

2020-10-28

I mit tilfælde er localtime modifikator resulterede i, at en dag blev tilføjet til datoen.

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.

String Literal som tidsstrengen

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

Her er et par andre eksempler.

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

Resultat:

2020-04-27 

I dette tilfælde fjerner den blot tidsdelen fra datoen.

Her er den igen, men med nogle modifikatorer.

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

Resultat:

2020-07-01 

I dette tilfælde ønskede jeg at få den dato, der er 6 måneder fra starten af ​​året for den angivne dato.

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

SELECT date('2458967.49737293');

Resultat:

2020-04-27

dato() vs strftime()

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

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

Resultat:

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

Datointerval

Som med alle SQLite-dato- og tidsfunktioner, date() 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. Python-databaseprogrammering med SQL Express for begyndere

  2. Sådan tjekker du gammel statistik

  3. Fatal fejl:Kald til udefineret funktion mysql_connect()

  4. 10 SP_EXECUTESQL Gotchas at undgå for bedre dynamisk SQL