MySQL получает дату n дней назад как временную метку
В MySQL, как я могу получить временную метку, скажем, 30 дней назад?
Что-то вроде:
select now() - 30
Результат должен вернуть отметку времени.
Ответы
Ответ 1
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
Ответ 2
Я думаю, что вы после DATE_SUB.
Ответ 3
Вы можете использовать:
SELECT unix_timestamp(now()) - unix_timestamp(maketime(_,_,_));
Для временных меток unix или:
SELECT addtime(now(),maketime(_,_,_));
Для стандартного формата даты MySQL.
Ответ 4
Если вам нужны отрицательные часы с отметкой времени
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 ) ) )
вернется только положительный, часы