2016-04-09 11 views
3

In einer sqlite3-Datenbank speichere ich Datum und Uhrzeit als Unix-Zeitstempel. Beispiele für Unix-Zeitstempel finden Sie in unserer Datenbank: 1457600307000, 1457600109000, 1457599991000.Unix-Zeitstempel mit sqlite3 lesen

Bei der Ausführung der folgenden Abfrage:

SELECT datetime(my_date, 'unixepoch') as last_update 
FROM my_table; 

die Ergebnisse sind nicht das, was wir erwarten. Das Datum, das wir von der Ausführung dieser Abfrage erhalten, ist: -1413-03-01 13:07:12

wenn wir tatsächlich ein Datum und eine Uhrzeit von March/April 2016 erwarten würden.

Gibt es trotzdem kann ich sqlite3 die Zeitstempel richtig lesen?

Antwort

3

Es gibt Unterschied zwischen der Anzahl der Sekunden vom Beginn der Epoche und die Anzahl der miliseconds. Division durch 1000:

SELECT my_date, datetime(my_date/1000, 'unixepoch') as last_update 
FROM my_table; 

SqlFiddleDemo

Ausgang:

╔════════════════╦═════════════════════╗ 
║ my_date  ║  last_update  ║ 
╠════════════════╬═════════════════════╣ 
║ 1457600307000 ║ 2016-03-10 08:58:27 ║ 
║ 1457600109000 ║ 2016-03-10 08:55:09 ║ 
║ 1457599991000 ║ 2016-03-10 08:53:11 ║ 
╚════════════════╩═════════════════════╝ 

wenn wir erwarten würden, tatsächlich ein Datum und Zeit von März/April 2016.

Es sieht so aus, als ob es in Reichweite ist.