DATEADD的这三种用途有什么区别吗?

AJM*_*AJM 1 sql t-sql sql-server-2005

以下所有三个陈述都返回相同的结果.所以我很难看到使用dayofyear,day和weekday之间的区别.我错过了什么或者它们都相同吗?

   SELECT DATEADD(dayofyear,1,'20111231')
   SELECT DATEADD(day,1,'20111231')
   SELECT DATEADD(weekday,1,'20111231')
Run Code Online (Sandbox Code Playgroud)

他们都返回2012-01-01 00:00:00.000

Ada*_*Dev 6

在那个用途中,没有他们返回相同.虽然"日"对于这种用途感觉很自然.

区别在于(例如)DATEPART:

SELECT DATEPART(dayofyear,'20111231') -- 365
SELECT DATEPART(day,'20111231') -- 31
SELECT DATEPART(weekday,'20111231') --7
Run Code Online (Sandbox Code Playgroud)

这是MSDN参考:

dayofyear,day和weekday返回相同的值.