2009-08-11 5 views
0

Wie schreibe ich eine Abfrage, um den Zeitunterschied zu finden?pgsql Zeit diffrence?

Zeitformat ist wie diese 2009-08-12 02:59:59

i diesmal mit

2009-08-12 02:59:10 vergleichen wollen

, wie sie überprüfen diese beiden

ich möchte einige Zeile zurückzukehren, um die Zeitdifferenz ist 30sec

Wie schreibe ich eine SQL-Anweisung ??

Antwort

2
select date_part('second',date1) - date_part('second',date2) 

in SQL können Sie tun, wie diese, die Sie Ausgabe in Sekunden geben

können Sie verwenden
+1

Ich denke, es funktioniert nicht gut, da es nur in der gleichen Minute funktioniert. Der Satz wird 0 zurückgeben, wenn Sie 2009-08-12 02:59:59 und 2012-10-08 12:13:59 vergleichen –

1
SELECT * FROM your_table WHERE time1_column - time2_column = interval '30s' 

Leider ist dies das beste was ich tun kann, da Ihre Beschreibung des Problems ...

+0

Ich glaube, Sie müssen für das Intervall auch "-30s" berücksichtigen, wenn time2_column größer als time1_column ist. – Paul

0

wenn beide Zeiten sind Spalten in Datenbanktabelle Sie direkt relationalen Operatoren verwenden können (>, < und =) Bsp. Wenn Sie eine Tabelle haben wie Test ( id bigint, Startzeit Zeitstempel, Endzeit Zeitstempel );

dann können Sie Abfragen wie select * from Test, wo Startzeit> Endzeit etc ..

Wenn Sie zwei Daten in Abfrage vergleichen wollen, können Sie zunächst Text zu Zeit umwandeln und sie dann vergleichen pgsql Datetime-Funktion von siehe: weitere Details http://www.postgresql.org/docs/6.3/static/c10.htm