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