#sql #mysql
#sql #mysql
Вопрос:
У меня есть таблица базы данных MySQL с полем метки времени unix. Мне интересно, как получить самые последние полные 13 недель?
Обновить
Но мне нужно отказаться от текущей недели. Итак, мне нужны последние полные (которые закончились в прошлом или сегодня) 13 недель.
Комментарии:
1. В каком формате находится временная метка, дата, Int / Unix?
Ответ №1:
WHERE FROM_UNIXTIME(timestamp) > DATE_SUB(FROM_UNIXTIME(timestamp), INTERVAL 13 WEEKS)
Если вы хотите исключить текущую неделю, вы можете сделать:
WHERE FROM_UNIXTIME(timestamp) < DATE_SUB(NOW(), INTERVAL 1 WEEKS)
Комментарии:
1. Не могли бы вы, пожалуйста, помочь мне с другой проблемой: мне нужно отказаться от текущей недели. Итак, мне нужны последние завершенные (которые закончились в прошлом или сегодня) 13 недель.
Ответ №2:
SELECT *,FROM_UNIXTIME(time) AS TS FROM MyTable WHERE TS > DATE_SUB(TS, INTERVAL 13 WEEKS)
Думаю, это должно сработать
Комментарии:
1. Вы получите
Unknown column 'TS' in 'where clause'
ошибку!WHERE
предложение не может ссылаться на псевдонимы! Вы должны использоватьHAVING
здесь.2. Не могли бы вы, пожалуйста, помочь мне с другой проблемой: мне нужно отказаться от текущей недели. Итак, мне нужны последние завершенные (которые закончились в прошлом или сегодня) 13 недель.
Ответ №3:
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add
SELECT * FROM foo WHERE created >= DATE_SUB(NOW(), INTERVAL 13 WEEK);
Комментарии:
1. Не могли бы вы, пожалуйста, помочь мне с другой проблемой: мне нужно отказаться от текущей недели. Итак, мне нужны последние завершенные (которые закончились в прошлом или сегодня) 13 недель.