MySQL从前一周检索数据

时间:2015-02-23 02:10:28

标签: mysql date

因此,我可以执行以下操作来获取上周的数据。

select * from table where week(date)=week(curdate())-1

2个星期前相同。但如果数据是在上一年,这将失败。无论数据属于哪一年,我都可以使用什么查询来获取n周前的数据。

编辑:本周从周日上午12点开始,到周六晚上11:59结束

1 个答案:

答案 0 :(得分:0)

什么时候"周"开始?星期日?星期一?与今天同一天?

假设您对最后一个选项感到满意,请执行以下操作:

SELECT ...
    WHERE date >= CURDATE() - INTERVAL $n WEEK
      AND date <  CURDATE() - INTERVAL $n-1 WEEK

实施例

mysql> SELECT CURDATE(), CURDATE() - INTERVAL 9 WEEK, CURDATE() - INTERVAL 9-1 WEEK;
+------------+-----------------------------+-------------------------------+
| CURDATE()  | CURDATE() - INTERVAL 9 WEEK | CURDATE() - INTERVAL 9-1 WEEK |
+------------+-----------------------------+-------------------------------+
| 2015-02-22 | 2014-12-21                  | 2014-12-28                    |
+------------+-----------------------------+-------------------------------+

如果你需要在特定的DOW上开始一周,那么通过进一步减去INTERVAL DAYOFWEEK(CURDATE()) DAY,查询会更加混乱。这可能会有所不同。

本周开始(假设是星期日)是CURDATE() - INTERVAL (WEEKDAY(CURDATE() + INTERVAL 1 DAY))。所以,用这个长时间的混乱替换上面表达式中的CURDATE()(两次)。