一尘不染

SQL Server 2005获取一年中任何月份的第一个和最后一个日期

sql

我有一个存储过程,必须接受一个月作为int(1-12)和一个一年作为int。给定这两个值,我必须确定该月的日期范围。因此,我需要一个datetime变量来表示该月的第一天,并需要另一个datetime变量来表示该月的最后一天。有没有很简单的方法来获取此信息?


阅读 120

收藏
2021-03-17

共1个答案

一尘不染

DECLARE @Month int
DECLARE @Year int

set @Month = 2
set @Year = 2004

select DATEADD(month,@Month-1,DATEADD(year,@Year-1900,0)) /*First*/

select DATEADD(day,-1,DATEADD(month,@Month,DATEADD(year,@Year-1900,0))) /*Last*/

但是,您需要什么作为月份的最后一天的时间组成部分?如果您的约会时间除了午夜以外还有其他时间成分,那么最好还是做些类似的事情

WHERE COL >= DATEADD(month,@Month-1,DATEADD(year,@Year-1900,0)) 
     AND COL < DATEADD(month,@Month,DATEADD(year,@Year-1900,0))

这样,如果最终迁移到SQL Server 2008和更高精度的日期时间数据类型,您的代码将继续起作用。

2021-03-17