zoukankan      html  css  js  c++  java
  • 如何获取月份的天数

    今天查看以前专案的数据库自定义函数,温习温习。发现其中有一个函数,是获取月份的天数的自定义函数。如下:

    udf_DaysInMonth
    CREATE FUNCTION [dbo].[udf_DaysInMonth] 

        
    @Date DATETIME 
    )
    RETURNS INT
    AS
    BEGIN
        
    DECLARE @dim AS TABLE (M INT,Dy INT)
        
    INSERT INTO @dim VALUES 
        (
    1,31),(3,31),(5,31),(7,31),(8,31),(10,31),(12,31),
        (
    4,30),(6,30),(9,30),(11,30),
        (
    2,
            
    CASE WHEN (YEAR(@Date% 4 = 0 AND YEAR(@Date% 100 <> 0OR (YEAR(@Date% 400  = 0)
            
    THEN 29
            
    ELSE 28 END
        )
        
        
    DECLARE @RValue INT 
        
    SELECT @RValue = [Dy] FROM @dim WHERE [M] = MONTH(@Date)
        
    RETURN @RValue
    END
    GO

    获取月份天数,以前在博客上也有写过,不过它只是取得二月份的天数。链接如下:http://www.cnblogs.com/insus/articles/2025019.html

    现第一眼看见专案中这个函数,总觉它写得不够好的感觉,是否能把它改写得更好些,启发点也是从获取二月份天数的CASE函数想起的。

    因此,我尝试改了,如下:

    udf_DaysInMonth_Ver2
    CREATE FUNCTION [dbo].[udf_DaysInMonth]

        
    @Date DATETIME 
    )
    RETURNS INT
    AS
    BEGIN
    RETURN CASE WHEN MONTH(@DateIN (1,3,5,7,8,10,12THEN 31
                
    WHEN MONTH(@DateIN (4,6,9,11THEN 30
                
    ELSE CASE WHEN (YEAR(@Date% 4 = 0 AND YEAR(@Date% 100 <> 0OR (YEAR(@Date% 400  = 0)
                          
    THEN 29
                          
    ELSE 28
                     
    END
                
    END
    END

    如果你已经有引过Insus.NET那个获取二月份天数的自定义函数,也可以参考下面这个版本:

    udf_DaysInMonth_Ver2_1
    CREATE FUNCTION [dbo].[udf_DaysInMonth]

        
    @Date DATETIME 
    )
    RETURNS INT
    AS
    BEGIN
    RETURN CASE WHEN MONTH(@DateIN (1,3,5,7,8,10,12THEN 31
                
    WHEN MONTH(@DateIN (4,6,9,11THEN 30
                
    ELSE [dbo].[DaysOfFebruary](YEAR(@Date))
                
    END
    END
  • 相关阅读:
    Cocos2dx开发(3)——Cocos2dx打包成APK,ANT环境搭建
    Cocos2dx开发(2)——Win8.1下Cocod2dx 3.2环境搭建
    Cocos2dx开发(1)——Win8.1下 NDK r10 环境搭建
    设计模式备忘录(1):适配器模式、依赖注入依赖倒置、空对象模式
    使用latencytop深度了解你的系统的延迟(转)
    操作系统基础
    计算机基础
    说明exit()函数作用的程序
    变量的引用类型和非引用类型的区别
    二进制转16进制JAVA代码
  • 原文地址:https://www.cnblogs.com/insus/p/2173028.html
Copyright © 2011-2022 走看看