究竟是什么让这两个getdate()不同

时间:2013-03-25 18:05:55

标签: sql

    dateadd(D, 1, getdate()), dateadd(Y, 1, getdate())

这两者有什么区别?谁能解释为什么他们给出相同的结果?

我试图让培训完成日期应该大于或等于一年。此外,根据培训完成日期,我需要找到谁将在未来30天内加入。

2 个答案:

答案 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用于年的日。。我们必须使用YYYYYY一年才能添加。

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