2010-11-29 22 views
27

Ist es möglich, den Unterschied zwischen zwei Zeitstempeln in Mysql zu berechnen und Ausgabeergebnis in Sekunden zu erhalten? wie 2010-11-29 13:16:55 - 2010-11-29 13:13:55 sollte 180 Sekunden geben.MySql Unterschied zwischen zwei Zeitstempeln in Sekunden?

Danke

+0

Eine sehr ähnliche Frage wurde vor einem Tag gefragt: http://stackoverflow.com/questions/4289828/calcts-difference-zwischen-zwei-daten-in-php/ – Orbling

+1

@Orbling: Nein, das Ergebnis ist sehr unterschiedlich, denn die Ausgabe ist in hh: mm: ss –

+0

@OMG Meine Antwort auf diese Frage, die akzeptiert eins, ist in hh: mm: ss - die anderen Antworten sind nicht, daher schließt es seine Antwort ein. Was du unten noch einmal erklärt hast. – Orbling

Antwort

25

Verwenden Sie die UNIX_TIMESTAMP function die DATETIME- in den Wert in Sekunden zu konvertieren, vom 1. Januar beginnen, 1970:

SELECT UNIX_TIMESTAMP('2010-11-29 13:16:55') - UNIX_TIMESTAMP('2010-11-29 13:13:55') as output 

Ergebnis:

output 
------- 
180 

Eine einfache Möglichkeit, Wenn Sie nicht sicher sind, welcher Wert größer ist als der andere, verwenden Sie ABS function:

SELECT ABS(UNIX_TIMESTAMP(t.datetime_col1) - UNIX_TIMESTAMP(t.datetime_col2)) as output 
+4

schlägt für DATEs vor 1970-01-01 fehl –

+1

@RidIculous Sie gewinnen einen Internetpoint. – JamesG

+0

danke, James. Ich werde das meinen anderen erzählen. Ich bin so alt, dass ich in wenigen Sekunden meinen Geburtstag habe. : oP –

125

Ich glaube nicht, dass die akzeptierte Antwort eine gute universelle Lösung ist!

Dies liegt daran, dass die Funktion UNIX_TIMESTAMP() für DATEs vor 1970-01-01 fehlschlägt (und für Daten in der fernen Zukunft, die 32-Bit-Ganzzahlen verwenden). Dies kann leicht für den Tag der Geburt vieler lebender Menschen passieren.

Eine bessere Lösung ist:

SELECT TIMESTAMPDIFF(SECOND, '2010-11-29 13:13:55', '2010-11-29 13:16:55') 

die modifiziert werden können Tag Jahr Monat Stunde und Minute zurückzukehren!

+0

das ist die beste lösung als die angenommene antwort, danke. – Vignesh

+0

viel aufgeräumter. sollte die akzeptierte Antwort sein –

+0

ist ihre Möglichkeit, das Ergebnis in Std: Min: Sek Format zu konvertieren? – coolDude

0

Die TIMESTAMPDIFF-Methode funktioniert nur mit dem Datetime-Format. : 10: 00' Wenn Sie den Unterschied zwischen nur zwei mal wie '11 will minus '10: 20: 00' dann verwenden

select TIME_TO_SEC('11:10:00')-TIME_TO_SEC('10:20:00') 
Verwandte Themen