如何在mysql的最后一个日期之前选择最后n个月?

问题描述:

我有一个问题与MySQL。 我有一个表像记录和记录有一个字段registered_date包含日期。我想选择最近n个月,但不是在当前日期之前。我必须选择registered_date包含的最后日期。如何在mysql的最后一个日期之前选择最后n个月?

registered_date

  • 2015年5月30日
  • 2015年5月29日
  • 2015-05-28
  • 2015年5月27日
  • ...

我们在七月。最后一次是2015-05-30。我想在2015-05-30前的最后3个月选择。

我试着喜欢这些:

.... where registered_date > DATE_SUB(now(), INTERVAL 6 MONTH) 

registered_Date between now() - interval 30 day and now() 

谢谢。

+0

能否请您分享该表的结构,一些样本数据,并你试图获得这些数据的结果? – Mureinik

+0

@Mureinik现在清楚了吗? –

你需要找到最大的日期,然后在此之前选择了三个月

select t.* 
from table t cross join 
    (select max(registered_date) as maxrd from table t) m 
where t.registered_date >= maxrd - interval 3 month; 
+0

只记得如果你的最后日期是2015年5月30日,这也会给你2015-02-28而> =应用-3个月的时间间隔。只是说,所以你(Yusuf)知道什么数据出来了。 – MrSimpleMind

+0

@MrSimpleMind。 。 。这是一个值得的点。该操作说明“2015年5月30日前三个月”,但没有具体说明这意味着什么。 –

+0

当然,我同意。只是想让他知道他可以得到什么数据。好的质疑,这是答案。 +1当你做交叉连接。比为每一行选择最大日期更好。 – MrSimpleMind

你尝试喜欢这个

SELECT * FROM table WHERE registered_date >= now()-interval 3 month; 
+0

是的,我做了这个解决方案 –