如何计算mysql中给定日期的月份明智日期

时间:2017-02-23 09:16:11

标签: mysql

我有约会,我需要计算同年当前和之前几个月的日子。

假设我的日期为2017年4月23日

我需要什么:

Jan-2017 - 31

Feb-2017 - 28 

March-2017 - 31

April-2017 - 30

我无法创建查询来获取这些计数。

1 个答案:

答案 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