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

Hvordan Strftime()-funktionen virker i SQLite

SQLite strftime() funktionen giver dig mulighed for at returnere en dato- og tidsværdi i et specificeret format.

Den faktiske dato/tidsværdi, der returneres, er baseret på en tidsstreng, som du angiver som et argument, når du kalder funktionen, samt eventuelle modifikatorer, du inkluderer (som valgfri argumenter). 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:

strftime(format, timestring, modifier, modifier, ...)

format argument kan være en hvilken som helst kombination af gyldige formatstrengerstatninger for strftime() funktion.

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.

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

Resultat:

2020-04-29 01:29:54

now tidsstrengen konverteres til den aktuelle dato og klokkeslæt baseret på den angivne formatstreng.

I dette tilfælde returnerer min formatstreng nøjagtig det samme resultat som datetime('now') ville være vendt tilbage.

Tilføj en modifikator

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

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

Resultat:

2020-04-29 03:31:50

I dette tilfælde tilføjede jeg to timer til tiden.

Flere modifikatorer

Du kan tilføje flere modifikatorer. Her er et eksempel på tilføjelse af en anden modifikator til det forrige eksempel.

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');

Resultat:

2020-04-29 13:33:22

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

Dette skyldes, at localtime modifikator antager, at den angivne tidsstreng er i Universal Coordinated Time (UTC). Den justerer derefter tidsstrengen, så den viser lokal tid.

Du får muligvis et andet resultat, afhængigt af din lokale tid.

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

SELECT 
  strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime') AS "Local",
  strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime') AS "Modified";

Resultat:

Local                Modified           
-------------------  -------------------
2020-04-29 11:34:57  2020-04-29 13:34:57

Unix/Epoketid

Du kan bruge %s format streng (små bogstaver) for at beregne epoketid.

SELECT strftime('%s', 'now');

Resultat:

1588124826

Epoketid (også kendt som epoketid, POSIX-tid, sekunder siden epoken eller UNIX-epoketid) er antallet af sekunder siden 1970-01-01.

Unix-tid er meget brugt i operativsystemer og filformater.

Juliens dag

Du kan bruge %J at returnere den julianske dag.

Julian Day er antallet af dage siden middagstid i Greenwich den 24. november 4714 f.v.t. (ved hjælp af den proleptiske gregorianske kalender).

Hvis du bruger den proleptiske julianske kalender, er dette mandag den 1. januar 4713 f.Kr.

Juliansk dag bruges typisk af astronomer, software osv. til at beregne forløbne dage mellem to begivenheder.

Sådan returnerer du den julianske dag med strftime() funktion.

SELECT strftime('%J', 'now');

Resultat:

2458968.575441667               

En anden måde at gøre dette på i SQLite er at bruge julianday() funktion.

Datointerval

Som med alle SQLite-dato- og tidsfunktioner, strftime() 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. Sådan konfigureres Glassfish Server i Eclipse manuelt

  2. UTC_TIMESTAMP() Eksempler – MySQL

  3. Hvad er den bedste måde at migrere en Django DB fra SQLite til MySQL?

  4. Jeg får en Der blev gjort forsøg på at indlæse et program med en forkert formatfejl på et SQL Server-replikeringsprojekt