我有一个类似的查询,可以正确拔出"上个月"的数据
SELECT t.*
FROM table t
WHERE CONCAT(MONTHNAME(t.create_date),' ', YEAR(t.create_date)) = CONCAT(MONTHNAME(CURRENT_DATE - INTERVAL 1 MONTH),' ', YEAR(CURRENT_DATE - INTERVAL 1 MONTH))
我现在想扩展它,以便它还包括新/当月前2分钟发生的任何事情。所以我想做类似...
的事情SELECT t.*
FROM table t
WHERE (
CONCAT(MONTHNAME(t.create_date),' ', YEAR(t.create_date)) = CONCAT(MONTHNAME(CURRENT_DATE - INTERVAL 1 MONTH),' ', YEAR(CURRENT_DATE - INTERVAL 1 MONTH))
OR (t.create_date between STARTOFMONTH and (STARTOFMONTH + INTERVAL 2 MINUTE)
)
我已经阅读了一堆类似的帖子,但找不到似乎适用于一般的"开始 间隔"方法的任何东西(我无法明确陈述该月月(。感谢任何想法
您可以减去2分钟。我建议使用DATE_FORMAT()
进行比较:
SELECT t.*
FROM table t
WHERE DATE_FORMAT(t.create_date, '%Y-%m') = DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y-%m') OR
DATE_FORMAT(t.create_date - INTERVAL 2 MINUTE, '%Y-%m') = DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y-%m);
您可以将其简化为:
WHERE DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y-%m') IN
(DATE_FORMAT(t.create_date, '%Y-%m'),
DATE_FORMAT(t.create_date - INTERVAL 2 MINUTE, '%Y-%m')
)