DELIMITER $$
USE `dis`$$
DROP FUNCTION IF EXISTS `f_check_date`$$
CREATE DEFINER=`root`@`%` FUNCTION `f_check_date`(data_date VARCHAR(10)) RETURNS INT(10)
BEGIN
DECLARE v_flag INT;#1代表是月末日期,0代表非月末
SELECT YEAR(DATE_FORMAT(data_date,'%Y%m%d')) INTO @year;
SELECT MONTH(DATE_FORMAT(data_date,'%Y%m%d')) INTO @v_month;
SELECT DAY(DATE_FORMAT(data_date,'%Y%m%d')) INTO @v_day;
#1,3,5,7,8,10,12月末日期为31号
CASE
WHEN @v_month IN (1,3,5,7,8,10,12) THEN
IF @v_day = 31 THEN
SET v_flag = 1; #月末日期
ELSE SET v_flag=0;#非月末日期
END IF;
#4,6,9,11月末为30号
WHEN @v_month IN (4,6,9,11) THEN
IF @v_day = 30 THEN
SET v_flag =1;#月末日期
ELSE SET v_flag=0;
END IF;
#2月判断
#1) 能够被4整除但不能被100整除。
#2) 能够被400整除。
WHEN MOD(@year,4)=0 AND MOD(@year,100)!=0 OR MOD(@year,400)=0 THEN
IF @v_month=2 AND @v_day <> 29 THEN
SET v_flag =0;
ELSE SET v_flag=1;#月末日期
END IF;
#平年
WHEN MOD(@year,4)<> 0 AND MOD(@year,100)=0 OR MOD(@year,400)<> 0 THEN
IF @v_month=2 AND @v_day <> 28 THEN
SET v_flag =0;
ELSE SET v_flag=1;#月末日期
END IF;
END CASE ;
RETURN v_flag;
END$$
DELIMITER ;
USE `dis`$$
DROP FUNCTION IF EXISTS `f_check_date`$$
CREATE DEFINER=`root`@`%` FUNCTION `f_check_date`(data_date VARCHAR(10)) RETURNS INT(10)
BEGIN
DECLARE v_flag INT;#1代表是月末日期,0代表非月末
SELECT YEAR(DATE_FORMAT(data_date,'%Y%m%d')) INTO @year;
SELECT MONTH(DATE_FORMAT(data_date,'%Y%m%d')) INTO @v_month;
SELECT DAY(DATE_FORMAT(data_date,'%Y%m%d')) INTO @v_day;
#1,3,5,7,8,10,12月末日期为31号
CASE
WHEN @v_month IN (1,3,5,7,8,10,12) THEN
IF @v_day = 31 THEN
SET v_flag = 1; #月末日期
ELSE SET v_flag=0;#非月末日期
END IF;
#4,6,9,11月末为30号
WHEN @v_month IN (4,6,9,11) THEN
IF @v_day = 30 THEN
SET v_flag =1;#月末日期
ELSE SET v_flag=0;
END IF;
#2月判断
#1) 能够被4整除但不能被100整除。
#2) 能够被400整除。
WHEN MOD(@year,4)=0 AND MOD(@year,100)!=0 OR MOD(@year,400)=0 THEN
IF @v_month=2 AND @v_day <> 29 THEN
SET v_flag =0;
ELSE SET v_flag=1;#月末日期
END IF;
#平年
WHEN MOD(@year,4)<> 0 AND MOD(@year,100)=0 OR MOD(@year,400)<> 0 THEN
IF @v_month=2 AND @v_day <> 28 THEN
SET v_flag =0;
ELSE SET v_flag=1;#月末日期
END IF;
END CASE ;
RETURN v_flag;
END$$
DELIMITER ;