How to select last 30 days dates in MySQL?

丶灬走出姿态 提交于 2019-12-10 17:22:36

问题


Can I list somehow the dates of last 30 days in MySQL? Not from a table!

For example I think about like this:

SELECT date WHERE date BETWEEN SUBDATE(NOW(), INTERVAL 30 DAY) AND NOW();

Is that possible?


回答1:


I hacked this together from someone else's code, but it seems to work:

SELECT DATE_FORMAT(m1, '%d %b %Y')
FROM (
SELECT SUBDATE( NOW() , INTERVAL 30 DAY) + INTERVAL m DAY AS m1
FROM (
select @rownum:=@rownum+1 as m from
(select 1 union select 2 union select 3 union select 4) t1,
(select 1 union select 2 union select 3 union select 4) t2,
(select 1 union select 2 union select 3 union select 4) t3,
(select 1 union select 2 union select 3 union select 4) t4,
(select @rownum:=-1) t0
) d1
) d2 
WHERE m1 <= now()
ORDER BY m1

The original code by valex is here:

How to get a list of months between two dates in mysql




回答2:


You can do this the "explicit" way. That is, generate a series of numbers and calculate the date:

select date(date_sub(now(), interval n.n day) as thedate
from (select 1 as n union all
      select 2 union all
      . . .
      select 30
     ) n


来源:https://stackoverflow.com/questions/21220406/how-to-select-last-30-days-dates-in-mysql

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!