我正在尝试按周,月和年获取数据。

我存储日期YYYY-MM-DD HH:MM:SS。

我在做什么下面。

取得一个星期的旧资料;

query + AND WEEK(date) = WEEK(CURDATE())


获取一个月的数据;

query + AND MONTH(date) = MONTH(CURDATE())


问题是我无法正确获取数据。例如,当我想获取一周的数据时,我也就一岁。

还有其他我可以使用的查询吗?我已经尝试过DATE(NOW()) - INTERVAL 30 DAY。它可以工作,但是非常慢。

谢谢!

最佳答案

我认为问题在于WEEK函数返回一年中的星期。因此,2017年1月1日可能是第1周(也可能是上一年的第53周,具体取决于一周中的星期几以及MySQL的处理方式)。但是,2016年1月1日也是第1周-只是不同的一年。

尝试将其更改为:

query + AND WEEK(date) = WEEK(CURDATE()) AND YEAR(date) = YEAR(CURDATE())


另外,如果您将其存储为字符串,则必须将其更改为DATETIME

关于mysql - 日期间隔无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47513403/

10-14 13:53