在我的mysql表中,我有一个日期格式的列:yyyy-mm-dd
我提出此请求以选择过去2个月的最长和最短日期。
SELECT MIN(date) AS date1, MAX(date) AS date2 FROM mytable
WHERE (MONTH(date) = (SELECT Month(MAX(date))-1 FROM mytable )
OR MONTH(date) = (SELECT Month(MAX(date))-2 FROM mytable ))
AND YEAR(date) = (SELECT YEAR(MAX(date))
FROM mytable)
但是当我想选择最近3个月的日期时,我发现我不能让这个月的Jaunuar-1 以及请求:
OR MONTH(date) = (SELECT Month(MAX(date))-3 FROM mytable )
不起作用!
我的问题是:如何选择过去3个月(或过去3个月或4个月或5个月内的最长和最短日期)。
非常感谢。
答案 0 :(得分:7)
SELECT MIN(`date`) AS date1,
MAX(`date`) AS date2
FROM mytable
WHERE `date` BETWEEN now() - interval 3 month
AND now();
答案 1 :(得分:0)
看来你想要完整的三个月,也就是说,从今天到3月4日你需要从12月1日到现在,而不是从12月4日到现在。
以下查询应该这样做:
SELECT MIN(date), MAX(date) FROM mytable
WHERE date <= DATE(NOW()) AND
date >= DATE_SUB(DATE_SUB(DATE(NOW()),
INTERVAL DAY(NOW())-1 DAY),
INTERVAL 3 MONTH)
同样,如果您希望此前3个月不包括本月,例如12月1日到2月28日你可以调整where子句:
WHERE date <= DATE_SUB(DATE(NOW()), INTERVAL DAY(NOW()) DAY) AND date >= ...
答案 2 :(得分:0)
SELECT MIN(date) AS date1, MAX(date) AS date2
FROM mytable
WHERE date >= date_sub((select max(date) from mytable), month, 3)