我有约会,我需要计算同年当前和之前几个月的日子。
假设我的日期为2017年4月23日
我需要什么:
Jan-2017 - 31
Feb-2017 - 28
March-2017 - 31
April-2017 - 30
我无法创建查询来获取这些计数。
答案 0 :(得分:0)
此代码执行您想要的操作,只需将变量@d设置为所需日期:
set @d=date("2017-02-17");
set @d1=date(concat(year(@d),"-",month(@d),"-01"));
set @d2=ADDDATE(@d1,32);
set @d2=date(concat(year(@d2),"-",month(@d2),"-01"));
select if(month(@d1)=12,31,dayofyear(@d2) - dayofyear(@d1));
所有月份的 编辑版,直到所选日期为止:
首先,我需要几个月的桌子:
create table months(id INT);
insert into months (id) values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12);
使用此语句并插入正确的日期,我得到所需的上个月日期:
set @d=date("2017-07-17");
select
concat(
DATE_FORMAT(date(concat(year(@d),'-',id,'-1')),'%M - %Y - '),
dayofmonth(last_day(date(concat(year(@d),"-",id,"-01")))))
from
months where id between 1 and month(@d);
这提供了:
January - 2017 - 31
February - 2017 - 28
March - 2017 - 31
April - 2017 - 30
May - 2017 - 31
June - 2017 - 30
July - 2017 - 31