最亲爱的专业人士,
我有一个查询来构建当月的第一天和最后一天,但我遇到了本月第一天的时间戳问题。
declare @FirstDOM datetime, @LastDOM datetime
set @FirstDOM = (select dateadd(dd,-(day(getdate())-1),getdate()) )
set @LastDOM = (select dateadd(s,-1,dateadd(mm,datediff(m,0,getdate())+1,0)))
自2015年2月起,我希望得到以下结果:
@FirstDOM = 2015-02-01 00:00:00.000
@LastDOM = 2015-02-28 23:59:59.000
@LastDOM是正确的,但我没有得到@FirstDOM的时间戳部分的零,我得到了正确的日期,但是我运行脚本的时间。说是早上8点50分,我得到了:
2015-02-01 08:50:49.160
解决这个小麻烦的最佳方法是什么?
问候,
尼克
答案 0 :(得分:5)
declare @FirstDOM datetime, @LastDOM datetime
set @FirstDOM = (select dateadd(d,-1,dateadd(mm,datediff(m,0,getdate()),1 )))
set @LastDOM = (select dateadd(s,-1,dateadd(mm,datediff(m,0,getdate())+1,0)))
Print @FirstDOM
Print @LastDOM
答案 1 :(得分:4)
将@FirstDOM转换为DATE
,如下所示:
declare @FirstDOM datetime, @LastDOM datetime
set @FirstDOM = (select CONVERT(DATE,dateadd(dd,-(day(getdate())-1),getdate())) )
set @LastDOM = (select dateadd(s,-1,dateadd(mm,datediff(m,0,getdate())+1,0)))
SELECT @FirstDOM,@LastDOM
我希望这会有所帮助!
谢谢,
Swapnil
答案 2 :(得分:3)
除了其他答案之外,自SQL-Server 2012以来,Microsoft提供
openssl_encrypt
有关msdn
的更多详情-
主题:我偶然发现了这个问题,寻找SQL中的第一天,其他人已经回答了
答案 3 :(得分:1)
您可以使用以下方法获取每月的第一天和最后一天:
SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) ----First Day
SELECT DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 1, 0)) ----Last Day