Wie würde ich in MySQL einen Zeitstempel erhalten, beispielsweise vor 30 Tagen?
Etwas wie:
select now() - 30
Das Ergebnis sollte einen Zeitstempel zurückgeben.
Wie würde ich in MySQL einen Zeitstempel erhalten, beispielsweise vor 30 Tagen?
Etwas wie:
select now() - 30
Das Ergebnis sollte einen Zeitstempel zurückgeben.
Antworten:
DATE_SUB macht einen Teil davon, je nachdem, was Sie wollen
mysql> SELECT DATE_SUB(NOW(), INTERVAL 30 day);
2009-06-07 21:55:09
mysql> SELECT TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 day));
2009-06-07 21:55:09
mysql> SELECT UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 day));
1244433347
Du könntest benutzen:
SELECT unix_timestamp(now()) - unix_timestamp(maketime(_,_,_));
Für Unix-Zeitstempel oder:
SELECT addtime(now(),maketime(_,_,_));
Für das Standard-MySQL-Datumsformat.
Wenn Sie negative Stunden ab Zeitstempel benötigen
mysql>SELECT now( ) , FROM_UNIXTIME( 1364814799 ) , HOUR( TIMEDIFF( now( ) , FROM_UNIXTIME( 1364814799 ) ) ) , TIMESTAMPDIFF( HOUR , now( ) , FROM_UNIXTIME( 1364814799 ) )
2013-06-19 22:44:15 2013-04-01 14:13:19 1904 -1904
Dies
TIMESTAMPDIFF( HOUR , now( ) , FROM_UNIXTIME( 1364814799 ) )
gibt negative und positive Werte zurück, wenn Sie x> this_timestamp verwenden müssen
aber dieses
HOUR( TIMEDIFF( now() , FROM_UNIXTIME( 1364814799 ) ) )
wird nur positive Stunden zurückgeben