MySQL получает дату n дней назад как отметку времени
в MySQL, как бы я получил метку времени, скажем, 30 дней назад?
что-то типа:
select now() - 30
результат возвращает метку времени.
3 ответа:
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 ) ) )
вернутся только положительные, часы