dateadd(D, 1, getdate()), dateadd(Y, 1, getdate())
这两者有什么区别?谁能解释为什么他们给出相同的结果?
我试图让培训完成日期应该大于或等于一年。此外,根据培训完成日期,我需要找到谁将在未来30天内加入。
答案 0 :(得分:1)
对于第二个“y”获得一年中的某一天,并不是说添加一年。所以他们俩都在说同样的话。第一个说当天增加一天,第二个说增加一天到今年的当天。要添加一年,您需要说dateadd(YY,1,getdate())。
http://msdn.microsoft.com/en-us/library/ms186819.aspx
我不遵循你上次发表的关于你要做什么的陈述。但是,如果您使用上述链接中定义的datepart,您应该能够添加所需的天数/月数/年。
答案 1 :(得分:1)
这SQL Fiddle证明了两者之间的区别。
例如,使用当前日期(GETDATE()
)作为数据库中的日期,我们有一个表可能看起来像......
id date
1 March, 25 2013 18:20:29+0000
...
第一个参数是datepart
。这可以是year (yy,yyyy)
,quarter (qq,q)
,dayofyear (dy,y)
等......整个列表可以在msdn找到。
我们使用D表示日期...这将在日期中添加1天。
SELECT dateadd(D,1,getdate()) FROM test;
将返回March, 26 2013 18:24:27+0000
。
虽然您可能认为Y会在一年中使用,但您的身份不正确。 Y用于年的日。。我们必须使用YY
或YYYY
一年才能添加。
SELECT dateadd(Y,1,getdate()) FROM test;
将生成March, 26 2013 18:24:27+0000
,这与我们之前的查询相同。这是因为一年中的某一天与当天相同。
SELECT dateadd(YY,1,getdate()) FROM test;
将输出预期的getdate()
+ 1 year
...(March, 25 2014 18:31:27+0000
)