在T-SQL中验证日期

时间:2011-07-19 10:18:41

标签: sql sql-server-2005 tsql

My Enddate是2009-05-31(使用sql server)

@EndDate  datetime
select startdate = dateadd(mm,-12,@EndDate)

如果我的EndDate = 2009-05-31 上面的代码将是我的 StartDate = 31-05-2008我的代码是否正确?

我希望我的发送日期能在4月份进行,所以

month(senddate) = month(dateadd(day,-1,dateadd(mm,-1,@EndDate))    

我上面的代码是否正确?

1 个答案:

答案 0 :(得分:0)

检查以下

declare @EndDate  datetime
set @EndDate = '20090531'
select dateadd(mm,0,@EndDate) -- dummy
,dateadd(mm,-1,@EndDate) -- april returns 30/4
,dateadd(mm,-2,@EndDate) -- march returns 31/3
,dateadd(mm,-3,@EndDate) -- february returns 28/2

更简单

month(senddate) = month(dateadd(mm,-1,@EndDate))

例如

declare @EndDate  datetime
set @EndDate = '20090531'
select month(dateadd(mm,-1,@EndDate)) -- returns 4 (april)
,month(dateadd(mm,-2,@EndDate)) -- returns 3 (march)
,month(dateadd(mm,-3,@EndDate)) -- returns 2 (february)

月初

declare @EndDate  datetime
set @EndDate = '20090531'
select CONVERT(VARCHAR(6),(dateadd(mm,-1,@EndDate)),112)+'01'