2010-01-26 7 views
5

Hey Leute, ich habe eine Tabelle, die eine Spalte mit dem Zeitstempel in sqlite3 hat. Es ist standardmäßig CURRENT_TIMESTAMP so, dass wenn die Zeile eingefügt wird, die aktuelle Zeit eingefügt wird. Jetzt versuche ich die Zeilen zu holen, die vor 2 Tagen oder mehr eingefügt wurden. Ich frage mich, ob das irgendeinen Sinn ergibt.Get Zeilen wo Zeitstempel Spalte ist 2 Tage alt

die documentation Lesen kam ich mit:

SELECT * FROM test WHERE timestamp < strftime('%s', '-2 days')

aber anscheinend das ist falsch. Ich kam mit dieser Abfrage, weil das ähnlich zu der Art ist, in der ich den Test in meinem tatsächlichen Code mache:

strtotime($timestamp) < strtotime("-2 days").

Aber ich hatte gehofft, dass sqlite3 einige eingebaute Checks für diese Art von Situation enthalten.

Danke, ich freue mich über jede Antwort.

EDIT: es herausgefunden: SELECT * FROM test WHERE timestamp < date('now', '-2 days')

ich dies offen jemand besser für den Fall halten würde etwas einfallen kann.

+0

Will, wusste nicht, dass das richtige Etikette war: D BEARBEITEN: Ich werde es in zwei Tagen akzeptieren, das ist, wenn das System es mich akzeptieren lässt :) –

Antwort

1

Also ich denke, ich habe es herausgefunden, es funktioniert gut für mich. Ich weiß nicht, ob dies der beste Weg ist, es zu tun, aber es scheint ziemlich einfach und wie ich schon sagte, arbeite:

SELECT * FROM test WHERE timestamp < date('now', '-2 days') 
+0

Ist dieses Konto für verschiedene Zeitzonen? –

4

in Postgres (ich weiß es nicht Ihre Plattform ist, aber ich bin Entsendung hier für andere Referenz zurück), können Sie auch folgendes tun:

SELECT * FROM test WHERE my_timestamp < NOW() - INTERVAL '2 DAY'; 
+0

wird dies in postgresql my_timstamp bfore NOW() – Ashwin