SQL查询查找当月的最后一天?

时间:2011-09-15 11:16:08

标签: sql sql-server-2008

SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
 LastDay_CurrentMonth

大家好我有查询找到当月的最后一天,这肯定运作良好,但我无法理解,因为我有其他类似的要求,必须相应更改。

有人可以向我解释.. 提前致谢

3 个答案:

答案 0 :(得分:17)

立即获取的日期时间

GETDATE() -- 2011-09-15 13:45:00.923

从'1900-01-01'

计算月份的差异
DATEDIFF(m, 0, GETDATE()) -- 1340

将差异添加到'1900-01-01'再加上一个月

DATEADD(m, DATEDIFF(m, 0, GETDATE())+1, 0) -- 2011-10-01 00:00:00.000

删除一秒

DATEADD(s, -1, DATEADD(m, DATEDIFF(m, 0, GETDATE())+1, 0)) -- 2011-09-30 23:59:59.000

答案 1 :(得分:1)

这将为您提供当月的最后一天但忽略时间

选择EOMONTH(GETDATE())

From Microsoft tech net

答案 2 :(得分:0)

CREATE FUNCTION  EOMONTH
(
    @date datetime,
    @months int
)
RETURNS datetime
AS
BEGIN
     declare @eom datetime
     declare @d datetime
     set @d = dateadd(MONTH, @months, @date)
     select @eom =   dateadd(SECOND,-1,DATEADD(MONTH,datediff(MONTH,0,@d)+1,0))
    RETURN  @eom 

END
GO