【发布时间】:2013-05-07 22:48:13
【问题描述】:
我的日期字段 (artists.onlineDate) 是 yyy-mm-dd hh:mm:ss
现在我得到了:
-- Today
SELECT * FROM artists WHERE DATE(artists.onlineDate) = CURDATE()
-- Current Week
SELECT * FROM artists WHERE WEEK(artists.onlineDate, 3) = WEEK(CURDATE(), 3)
-- Current Month
SELECT * FROM artists WHERE MONTH(artists.onlineDate) = MONTH(CURDATE())
-- Current Year
SELECT * FROM artists WHERE YEAR(artists.onlineDate) = YEAR(CURDATE())
但我需要的是准确的:昨天、上周、上个月、去年
我试着解释一下。如果我们到了星期三,我使用SELECT * FROM artists WHERE DATE(artists.onlineDate) = CURDATE(),那么我会从星期一到星期三。
我想要上周的星期一到星期日。前一个日历周。
月份和年份也一样。
我认为SUB_DATE 不是正确的方法。
有什么建议吗?
【问题讨论】:
-
这取决于您要查找的内容。如果您希望所有记录的 onlineDate 都属于上周(例如),那么您的逻辑是完全正确的。你现在没有工作怎么办?
-
您的问题不是很清楚,您需要一周、一个月和一年前的确切时刻还是日期范围?
-
我需要,例如,上周。有了这个我得到了当前周 SELECT * FROM Artists WHERE WEEK(artists.onlineDate, 3) = WEEK(CURDATE(), 3) 但我需要前一周,从周一到周日,而不是 7 天前。
-
我现在开始工作了,它似乎只是添加了一个 "-1" WEEK(artists.onlineDate, 3) = WEEK(CURDATE(), 3) -1 所以我在一周前得到了日历