Get the last day of the month in SQL

后端 未结 20 2160
借酒劲吻你
借酒劲吻你 2020-11-27 04:49

I need to get the last day of the month given as a date in SQL. If I have the first day of the month, I can do something like this:

DATEADD(DAY, DATEADD(MONT         


        
20条回答
  •  隐瞒了意图╮
    2020-11-27 05:13

    I wrote following function, it works.

    It returns datetime data type. Zero hour, minute, second, miliseconds.

    CREATE Function [dbo].[fn_GetLastDate]
    (
        @date datetime
    )
    returns datetime
    as
    begin
    
    declare @result datetime
    
     select @result = CHOOSE(month(@date),  
     DATEADD(DAY, 31 -day(@date), @date),
     IIF(YEAR(@date) % 4 = 0, DATEADD(DAY, 29 -day(@date), @date), DATEADD(DAY, 28 -day(@date), @date)), 
     DATEADD(DAY, 31 -day(@date), @date) ,
     DATEADD(DAY, 30 -day(@date), @date), 
     DATEADD(DAY, 31 -day(@date), @date),
     DATEADD(DAY, 30 -day(@date), @date), 
     DATEADD(DAY, 31 -day(@date), @date),
     DATEADD(DAY, 31 -day(@date), @date),
     DATEADD(DAY, 30 -day(@date), @date),
     DATEADD(DAY, 31 -day(@date), @date),
     DATEADD(DAY, 30 -day(@date), @date), 
     DATEADD(DAY, 31 -day(@date), @date))
    
     return convert(date, @result)
    
    end
    

    It's very easy to use. 2 example:

    select [dbo].[fn_GetLastDate]('2016-02-03 12:34:12')
    
    select [dbo].[fn_GetLastDate](GETDATE())
    

提交回复
热议问题