Gibt es eine Möglichkeit, eine Abfrage in MySQL durchzuführen, die mir den Unterschied zwischen zwei Zeitstempeln in Sekunden gibt, oder müsste ich dies in PHP tun? Und wenn ja, wie würde ich das machen?
Gibt es eine Möglichkeit, eine Abfrage in MySQL durchzuführen, die mir den Unterschied zwischen zwei Zeitstempeln in Sekunden gibt, oder müsste ich dies in PHP tun? Und wenn ja, wie würde ich das machen?
Antworten:
Sie können die TIMEDIFF()
und die TIME_TO_SEC()
Funktionen wie folgt verwenden:
SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
Sie können die UNIX_TIMESTAMP()
Funktion auch so verwenden , wie @Amber in einer anderen Antwort vorgeschlagen hat:
SELECT UNIX_TIMESTAMP('2010-08-20 12:01:00') -
UNIX_TIMESTAMP('2010-08-20 12:00:00') diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
Wenn Sie den TIMESTAMP
Datentyp verwenden, ist die UNIX_TIMESTAMP()
Lösung wahrscheinlich etwas schneller, da die TIMESTAMP
Werte bereits als Ganzzahl gespeichert sind, die die Anzahl der Sekunden seit der Epoche ( Quelle ) darstellt. Zitieren der Dokumente :
Bei
UNIX_TIMESTAMP()
Verwendung in einerTIMESTAMP
Spalte gibt die Funktion den internen Zeitstempelwert direkt zurück, ohne implizite Konvertierung von Zeichenfolgen in Unix-Zeitstempel.Beachten Sie, dass der
TIMEDIFF()
Datentyp von zurückgegeben wirdTIME
.TIME
Die Werte können zwischen '-838: 59: 59' und '838: 59: 59' liegen (ungefähr 34,96 Tage).
Wie wäre es mit "TIMESTAMPDIFF":
SELECT TIMESTAMPDIFF(SECOND,'2009-05-18','2009-07-29') from `post_statistics`
https://dev.mysql.com/doc/refman/5.7/de/date-and-time-functions.html#function_timestampdiff
str_to_date(date_column, '%m/%d/%Y')
Datumsspalte in einer anderen Form als JJJJ-MM-TT befindet, versuchen Sie Folgendes : Innerhalb der TIMESTAMPDIFF-Funktion für die Spalte, deren Formatierung korrigiert werden muss.
TIME_TO_SEC
Maximum bei liegt, 3020399
während dies den korrekten Wert zurückgibt.
Beachten Sie, dass die TIMEDIFF()
Lösung funktioniert nur , wenn das datetimes
sind weniger als 35 Tage auseinander!
TIMEDIFF()
Gibt einen TIME
Datentyp zurück und der Maximalwert für TIME beträgt 838: 59: 59 Stunden (= 34,96 Tage).
unit
Parameter aufSECOND
.