mysql函数过程判断数据日期是不是月末(区分平年和闰年)

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 ; 文章来源: mysql函数过程判断数据日期是不是月末(区分平年和闰年)

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:mysql函数过程判断数据日期是不是月末(区分平年和闰年)