Как в MySQL получить отметку времени, скажем, 30 дней назад?
Что-то вроде:
select now() - 30
Результат должен вернуть отметку времени.
Как в MySQL получить отметку времени, скажем, 30 дней назад?
Что-то вроде:
select now() - 30
Результат должен вернуть отметку времени.
Ответы:
DATE_SUB сделает часть этого в зависимости от того, что вы хотите
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
Вы можете использовать:
SELECT unix_timestamp(now()) - unix_timestamp(maketime(_,_,_));
Для временных меток unix или:
SELECT addtime(now(),maketime(_,_,_));
Для стандартного формата даты MySQL.
Если вам нужны отрицательные часы из отметки времени
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
этот
TIMESTAMPDIFF( HOUR , now( ) , FROM_UNIXTIME( 1364814799 ) )
вернет отрицательные и положительные значения, если вам нужно использовать x> this_timestamp
но это
HOUR( TIMEDIFF( now() , FROM_UNIXTIME( 1364814799 ) ) )
вернет только положительные часы