我正在尝试创建一个存储过程,当给定月值时,返回该用户的最后一天。
到目前为止:
DROP PROCEDURE IF EXISTS getLastDayMonth$$
CREATE PROCEDURE getLastDayMonth(IN inMonth int)
BEGIN
SELECT LAST_DAY(inMonth);
END $$
我无法弄清楚如何使inMonth
sql函数Last_DAY
接受的参数。是否有另一个函数将int作为一个月并返回该月的最后一天?我试图避免将DATE
类型作为参数
答案 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)