SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
LastDay_CurrentMonth
大家好我有查询找到当月的最后一天,这肯定运作良好,但我无法理解,因为我有其他类似的要求,必须相应更改。
有人可以向我解释.. 提前致谢
答案 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)
答案 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