-2

我想运行一个 MYSQL 查询来获取前一周的数据。日期列的数据类型是 DATETIME。有人可以建议吗?

4

5 回答 5

9
SELECT * 
  FROM calendar 
 WHERE dt BETWEEN CURDATE()-INTERVAL 1 WEEK AND CURDATE();
于 2013-02-11T11:13:15.460 回答
1

这是另一个版本:

SELECT * FROM table WHERE 
YEARWEEK(`date`, 1) = YEARWEEK( CURDATE() - INTERVAL 1 WEEK, 1)
于 2016-03-07T18:47:23.143 回答
0
SELECT id FROM tbl
WHERE date >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY
AND date < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY
于 2016-01-05T08:22:09.597 回答
0

这是我发现在前一个星期一到当前星期一之间获取数据最可靠的解决方案。(这是大多数人说过去一周时的意思,但不是全部,这反映在 mysql 中)。

SELECT 
   * 
FROM 
   table 
WHERE 
   date BETWEEN 
      (CURDATE() - INTERVAL 1 DAY) + INTERVAL -1 WEEK - INTERVAL WEEKDAY((CURDATE() - INTERVAL 1 DAY)) DAY 
      and 
      (CURDATE() - INTERVAL 1 DAY) + INTERVAL 0 WEEK - INTERVAL WEEKDAY((CURDATE() - INTERVAL 1 DAY)) DAY

再换一周也很容易

于 2021-10-05T08:57:34.597 回答
-1

为当前日期时间创建变量 - 1 周并进行以下查询:

SELECT * FROM table WHERE date > $datatime
于 2013-02-11T11:14:30.700 回答