2011-07-19 4 views
1

Mon endDate est 2009-05-31 (utilisant le serveur sql)vérification des dates dans T-SQL

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

Si mon EndDate = 2009-05-31 avec le code ci-dessus va mon StartDate = 31-05 -2008 est mon code correct?

Je veux que mon DateEnv soit au mois d'Avril afin

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

est mon code ci-dessus correct?

+0

Si votre code renvoie le résultat que vous attendez, que c'est correct, sinon c'est incorrect. –

Répondre

0

Vérifiez ci-dessous

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 

Plus simple,

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

exemple

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) 

début du mois

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

Si je veux partir du 1er avril, quel sera le code? – user680865

+0

dateadd (mm, -1, @ EndDate) renvoie 30/4 si je veux 2008-04-01, quel sera le code? – user680865

+0

ok donc il couvre tous les jours dans le mois puis ........... pas besoin de s'inquiéter de jour précis donc pas besoin de – user680865

Questions connexes