2010-03-13 33 views
26

ich nicht in der Lage war, um herauszufinden, (googeln, MySQL-Referenzhandbuch zu lesen), wie in Sekunden in MySQL Wert von DATETIME- zu erhalten.MYSQL - Datumzeit auf Sekunden

Ich möchte nicht Sekunden von Datetime extrahieren, sondern es in Sekunden konvertieren.

Antwort

27

Wenn Sie den Unterschied zwischen DATETIME- Werte haben wollen, verwenden TIMESTAMPDIFF:

TIMESTAMPDIFF (Einheit, datetime_expr1, datetime_expr2)

Returns datetime_expr2 – datetime_expr1, wo datetime_expr1 und datetime_expr2 sind Datum oder Datumzeit Ausdrücke. Ein Ausdruck kann ein Datum und der andere ein Datum sein; Ein Datumswert wird als Datetime mit dem Zeitteil '00: 00: 00' behandelt, falls erforderlich. Die Einheit für das Ergebnis (eine Ganzzahl) wird durch das Einheitenargument angegeben. Die zulässigen Werte für die Einheit entsprechen denen in der Beschreibung der Funktion TIMESTAMPADD().

mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
-> 3
mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
-> -1
mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');
-> 128885

unit können auch HOUR sein, das ist, was Sie in einer der Kommentare gefragt.

+0

Sorry, aber ich frage über ganze DATETIME :( – Mike

+0

@ Mike: Siehe meine aktualisierte Antwort –

+0

süß :) Ich markiere deine Antwort als die richtige :) danke – Mike

34

Wenn von "auf Sekunden konvertieren", meinst du "konvertieren zu einer UNIX Timestamp" (dh Anzahl der Sekunden seit 1970-01-01), dann können Sie die UNIX_TIMESTAMP Funktion:

select UNIX_TIMESTAMP(your_datetime_field) 
from your_table 
where ... 


Und aus Kompatibilitätsgründen, um von einem Unix-Timestamp zu einem Datetime zu konvertieren, können Sie die FROM_UNIXTIME Funktion verwenden.

+0

gut und wenn ich DIFFERENCE zwischen zwei Datumsangaben in Stunden will, sollte ich etwas wie? : auswählen (unix_timestamp ('2010-01-02 18:00:00') - unix_timestamp ('2010-01-01 16:00:00'))/60/60; – Mike

+0

Ich nehme an, die TIMESTAMPDIFF-Funktion sollte den Trick machen: Sie erlaubt es, die gewünschte Einheit anzugeben (siehe http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_timestampdiff) –

+0

danke, Felix hat bereits vorgeschlagen, malsteampdiff zu verwenden, das ist was ich wollte – Mike

2

Die Funktion UNIX_TIMESTAMP (datetime) gibt die Unixzeit zurück, die die Anzahl der Sekunden seit dem 1. Januar 1970 0000 UTC ist. Das mag sein, was Sie brauchen, aber nicht, wenn Sie mit Geburtsdatum, historischen Daten zu tun haben, oder die Daten nach 2037

2

in mysql ab 5.5.0 können Sie to_seconds()

TO_SECONDS(FIELD_NAME) 

FIELD_NAME verwenden müssen DATETIME Typ

6

Verwendung TIME_TO_SEC in früheren Versionen werden für mysql

SELECT TIME_TO_SEC (Zeitspalte) FROM Tabelle

0

Ich habe meine eigene Abfrage erstellt für Ihr Problem:

select (hour(*colname*)*3600 + minute(*colname*)*60 + second(*colname*)) 
from widgets 
where id=1; 
  • Verwenden Sie id=1, wenn Sie eine bestimmte Zeile benötigen.
  • Die Ausgabe erfolgt in Sekunden.
+0

Die Frage wurde bereits vor langer Zeit beantwortet, und die akzeptierte Antwort behandelt auch Tage, nicht nur Stunden und Minuten. Das OP klärte in einem Kommentar, dass er den Unterschied zwischen zwei Zeitpunkten in Stunden berechnen wolle. –

Verwandte Themen