2016-11-18 3 views
0

Ich habe kleine Schwierigkeiten durch Sortieren timestamp in SQLite und ich habe alles versucht und ich bin immer noch nicht in der Lage, das richtige Ergebnis zu erhalten.SQLite ORDER BY Zeitstempel gibt keine erwarteten Ergebnisse

Ich habe einen Zeitstempel und ich versuche, es so zu bestellen, dass die neueste die erste sein wird.

ich bereits versucht folgenden Codes:

db.each("SELECT values ORDER BY datetime(timestamp) DESC LIMIT 200"); 
db.each("SELECT values ORDER BY datetime('timestamp') DESC LIMIT 200"); 
db.each("SELECT values ORDER BY datetime("timestamp") DESC LIMIT 200"); 
db.each("SELECT values ORDER BY date(timestamp) DESC LIMIT 200"); 
db.each("SELECT values ORDER BY timestamp DESC LIMIT 200"); 

Die letzte Option gibt mir etwas am nächsten Ergebnisse leider sortiert es Zeitstempel nur von Zeit, zum Beispiel Reihen 17. November erstellt werden korrekt und Zeilen erstellt 18. November sortiert werden "älter".

Siehe Bildschirm folgende:

enter image description here

Mein timestamp Format sieht wie folgt aus:

Thu Nov 17 2016 11:47:56 

Dies sollte sehr trivial sein, auch, dass ich nicht herausfinden, was falsch ist.

EDIT:

Funktion, wo ich generieren timestamps sieht wie folgt aus:

var timestamp = new Date().toString().replace(' GMT+0100 (CET)', ''); 
+0

'bedauerlicherweise dauert es nicht mal ein datum.' ... bitte erläutern Sie das, wie funktioniert es? –

+0

Also habe ich meine Frage bearbeitet Ich hoffe jetzt ist es besser zu verstehen –

+0

Speichern Sie den Zeitstempel als Millisekunden seit Epoche und dann werden Sie immer in der Lage sein zu sortieren. –

Antwort

2

Der String 'Thu Nov 17 2016 11:47:56' ist keine gültige Datetime-Zeichenfolge. In vielen Ländern haben 'Thu' und 'Nov' keine Bedeutung. So durch

db.each("SELECT values ORDER BY timestamp DESC LIMIT 200"); 

Sie sortieren Strings. 'Thu' kommt nach 'Fri', denn 'T' kommt nach 'F' im aplhabet, so dass Sie Donnerstag vor Freitag beim Sortieren Ihrer Daten absteigend erhalten.

Verwenden Sie ein gültiges SQLite-Datetime-Format zum Speichern Ihrer Daten, z. 'YYYY-MM-DD HH:MM:SS.SSS'. Dann können Sie leicht mit ORDER BY timestamp DESC sortieren.

+0

Oder, noch besser, speichern Sie ms seit der Epoche, und wenn eine Textversion des Zeitstempels notwendig ist, verwenden Sie eine Funktion, um es zu generieren. –

Verwandte Themen