我有一个存储过程,必须接受一个月作为int(1-12)和一个一年作为int。给定这两个值,我必须确定该月的日期范围。因此,我需要一个datetime变量来表示该月的第一天,并需要另一个datetime变量来表示该月的最后一天。有没有很简单的方法来获取此信息?
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和更高精度的日期时间数据类型,您的代码将继续起作用。