SQL SELECT 每月的第一天和最后一天。
SQL SELECT First Day and Last Day of the Month.
尊敬的专业人士,
我构建了一个查询来获取当月的第一天和最后一天,但我对当月第一天的时间戳有疑问。
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 a.m.,我得到:
2015-02-01 08:50:49.160
解决这个小问题的最佳方法是什么?
此致,
尼克
将@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
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
除了其他答案,自 SQL-Server 2012 起,Microsoft 提供
EOMONTH ( start_date [, month_to_add ] )
有关 msdn
的更多详细信息
--
of topic:我在 SQL 中无意中发现了这个问题,该问题已被其他人回答
您可以使用此方法获取该月的第一天和最后一天:
SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) ----First Day
SELECT DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 1, 0)) ----Last Day
尊敬的专业人士,
我构建了一个查询来获取当月的第一天和最后一天,但我对当月第一天的时间戳有疑问。
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 a.m.,我得到:
2015-02-01 08:50:49.160
解决这个小问题的最佳方法是什么?
此致,
尼克
将@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
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
除了其他答案,自 SQL-Server 2012 起,Microsoft 提供
EOMONTH ( start_date [, month_to_add ] )
有关 msdn
的更多详细信息--
of topic:我在 SQL 中无意中发现了这个问题,该问题已被其他人回答
您可以使用此方法获取该月的第一天和最后一天:
SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) ----First Day
SELECT DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 1, 0)) ----Last Day