存储过程:获取月份

时间:2012-02-18 18:46:42

标签: mysql function stored-procedures

我正在尝试创建一个存储过程,当给定月值时,返回该用户的最后一天。

到目前为止:

DROP PROCEDURE IF EXISTS getLastDayMonth$$
CREATE PROCEDURE getLastDayMonth(IN inMonth int) 
BEGIN
    SELECT LAST_DAY(inMonth);
END $$

我无法弄清楚如何使inMonth sql函数Last_DAY接受的参数。是否有另一个函数将int作为一个月并返回该月的最后一天?我试图避免将DATE类型作为参数

1 个答案:

答案 0 :(得分:1)

您可以将飞蛾添加到第一年并获取last_date:

SELECT LAST_DAY( DATE_ADD( '2012-01-01 00:00:00',  
                           INTERVAL inMonth - 1 MONTH) 
               );

替代解决方案是ELT功能:

SELECT cast( 
         ELT(inmonth, '31', '28', '31', '30', '31', .... ,'31' )
         as SMALLINT 
       ) as last_day

最后一个,使用case声明:

SELECT case inmonth
        when 1 then 31
        when 2 then 29
        ...
        when 12 then 31
       end as last_day

<强> EDITED

mysql> CREATE PROCEDURE getLastDayMonth(IN inMonth int)
    -> begin
    -> SET @t=inMonth -1;
    -> SELECT LAST_DAY( DATE_ADD( '2012-01-01 00:00:00',INTERVAL @t MONTH));
    -> end@@
Query OK, 0 rows affected (0.24 sec)