业务碰到一个场景,存储过程中需要根据当前年份是否是闰年计算年天数,网上搜索后没有比较简易的做法,思考后做出判断函数如下:
DELIMITER $$
DROP FUNCTION IF EXISTS `fun_is_leap_year`$$
CREATE FUNCTION `fun_is_leap_year`(year_varchar VARCHAR (20)) RETURNS INT(11)
BEGIN
RETURN (
CASE
-- 如果是闰年的2月有29天
WHEN DAYOFMONTH(
LAST_DAY(CONCAT(year_varchar, '-02-01'))
) = 29
THEN 1
ELSE 0
END
) ;
END$$
DELIMITER ;
参数为4位年,判断做法是在4位年后拼上2月1日,然后取当月最后一天,判断是否是29日,如果是那就是闰年,否则不是