В MySQL, как мне получить временную метку, скажем, 30 дней назад?MySQL получает дату n дней назад как временную метку
Что-то вроде:
select now() - 30
Результат должен возвратить метку времени.
В MySQL, как мне получить временную метку, скажем, 30 дней назад?MySQL получает дату n дней назад как временную метку
Что-то вроде:
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
В чем отличие первого и второго запросов? – Codler
Я также хотел бы ответить на вышеупомянутый вопрос. Спасибо. – transilvlad
появляется (v1) DATE_SUB возвращает DATETIME или STRING в зависимости от входов. TIMESTAMP (v2) заставляет его использовать тип TIMESTAMP. http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add – jsh
Я думаю, что вы после DATE_SUB.
Вы могли бы использовать:
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)))
будет возвращать только положительные, часы
Какой формат метки времени? Есть формат, с которым знакомы люди, которые работают с функциями MySQL DATE, и есть временная метка стиля UNIX. – joebert
Я после Timestamp MySQL. –