Как получить записи за последние полные 13 недель?

#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 недель.