sql >> Database >  >> RDS >> SQLite

SQLite-datum en tijd

Samenvatting :in deze zelfstudie laten we u zien hoe u met de SQLite-datum- en tijdwaarden werkt en de ingebouwde datum- en tijdfuncties gebruikt om datum- en tijdwaarden te verwerken.

SQLite ondersteunt geen ingebouwde datum- en/of tijdopslagklasse. In plaats daarvan maakt het gebruik van enkele ingebouwde datum- en tijdfuncties om andere opslagklassen te gebruiken, zoals TEXT , REAL , of INTEGER voor het opslaan van de datum- en tijdwaarden.

De TEXT gebruiken opslagklasse voor het opslaan van SQLite-datum en tijd

Als u de TEXT . gebruikt opslagklasse om de datum- en tijdwaarde op te slaan, moet u het ISO8601-tekenreeksformaat als volgt gebruiken:

YYYY-MM-DD HH:MM:SS.SSSCode language: SQL (Structured Query Language) (sql)

Bijvoorbeeld 2016-01-01 10:20:05.123

Maak eerst een nieuwe tabel met de naam datetime_text voor demonstratie.

CREATE TABLE datetime_text(
   d1 text, 
   d2 text
);Code language: SQL (Structured Query Language) (sql)

Probeer het

De tabel bevat twee kolommen d1 en d2 met TEXT gegevenstype.

Datum- en tijdwaarden invoegen in de datetime_text tabel, gebruik je de DATETIME functie.

Om bijvoorbeeld de huidige UTC-datum en tijdwaarde te krijgen, geeft u de nu letterlijke tekenreeks als volgt door aan de functie:

SELECT datetime('now');Code language: SQL (Structured Query Language) (sql)

Probeer het

Om de lokale tijd te krijgen, geef je een extra argument door localtime .

SELECT datetime('now','localtime');Code language: SQL (Structured Query Language) (sql)

Probeer het

Ten tweede, voeg de datum- en tijdwaarden in de datetime_text tabel als volgt:

INSERT INTO datetime_text (d1, d2)
VALUES(datetime('now'),datetime('now', 'localtime'));Code language: SQL (Structured Query Language) (sql)

Probeer het

Ten derde, vraag de gegevens op uit de datetime_text tafel.

SELECT
	d1,
	typeof(d1),
	d2,
	typeof(d2)
FROM
	datetime_text;Code language: SQL (Structured Query Language) (sql)

Probeer het

REAL gebruiken opslagklasse om SQLite-datum- en tijdwaarden op te slaan

U kunt de REAL . gebruiken opslagklasse om de datum- en/of tijdwaarden op te slaan als Juliaanse dagnummers, wat het aantal dagen is sinds de middag in Greenwich op 24 november 4714 v. Chr. gebaseerd op de proleptische Gregoriaanse kalender.

Laten we eens kijken naar een voorbeeld van het gebruik van de REAL-opslagklasse om datum- en tijdwaarden op te slaan.

Maak eerst een nieuwe tabel met de naam datetime_real .

CREATE TABLE datetime_real(
   d1 real
);Code language: SQL (Structured Query Language) (sql)

Probeer het

Ten tweede, voeg de "huidige" datum- en tijdwaarde in de datetime_real tafel.

INSERT INTO datetime_real (d1)
VALUES(julianday('now'));Code language: SQL (Structured Query Language) (sql)

Probeer het

We gebruikten de julianday() functie om de huidige datum en tijd om te zetten in de Juliaanse dag.

Ten derde, vraag gegevens op uit de datetime_real tafel.

SELECT d1 FROM datetime_real;Code language: SQL (Structured Query Language) (sql)

Probeer het

De uitvoer is niet leesbaar voor mensen.

Gelukkig kun je de ingebouwde date() . gebruiken en time() functies om een ​​datum- en tijdwaarde als volgt op te maken:

SELECT
	date(d1),
	time(d1)
FROM
	datetime_real;Code language: SQL (Structured Query Language) (sql)

Probeer het

INTEGER gebruiken om SQLite-datum- en tijdwaarden op te slaan

Naast TEXT en REAL opslagklassen, kunt u de INTEGER opslagklasse om datum- en tijdwaarden op te slaan.

We gebruiken meestal de INTEGER om UNIX-tijd op te slaan, wat het aantal seconden is sinds 1970-01-01 00:00:00 UTC . Zie het volgende voorbeeld:

Maak eerst een tabel met één kolom waarvan het gegevenstype INTEGER is om de datum- en tijdwaarden op te slaan.

CREATE TABLE datetime_int (d1 int);Code language: SQL (Structured Query Language) (sql)

Probeer het

Ten tweede, voeg de huidige datum- en tijdwaarde in de datetime_int tafel.

INSERT INTO datetime_int (d1)
VALUES(strftime('%s','now'));Code language: SQL (Structured Query Language) (sql)

Probeer het

Ten derde, vraag gegevens op van de datetime_int tafel.

SELECT d1 FROM datetime_int;Code language: SQL (Structured Query Language) (sql)

Probeer het

Het is een geheel getal.

Om het resultaat op te maken, kunt u de ingebouwde datetime() . gebruiken functioneren als volgt:

SELECT datetime(d1,'unixepoch')
FROM datetime_int;Code language: SQL (Structured Query Language) (sql)

Probeer het

Met SQLite kunt u vrijelijk alle gegevenstypen kiezen om datum- en tijdwaarden op te slaan en de ingebouwde datum- en tijdfunctie gebruiken om tussen indelingen te converteren.

Voor gedetailleerde informatie over SQLite-functies voor datums en tijden, bekijk de ingebouwde functies voor datums en tijden.

In deze zelfstudie hebt u geleerd hoe u de TEXT . gebruikt , REAL , en INTEGER opslagklassen om datum- en tijdwaarden op te slaan. Bovendien hebt u geleerd hoe u de ingebouwde datum- en tijdfuncties kunt gebruiken om de opgeslagen datum- en tijdwaarden om te zetten in leesbare formaten.


  1. Hoe verander ik een PostgreSQL-tabel en maak ik een kolom uniek?

  2. Schakel een partitie in SQL Server (T-SQL) in

  3. Breid EM Grid Control uit naar nieuwe nodes

  4. Hoe een API-client te voorzien van 1.000.000 databaseresultaten?