SQL Server DATEDIFF:dayofyear 与 day 有何不同?

Ric*_*ard 3 sql-server t-sql

当我查看SQL Server 上的DATEDIFF()函数时,我发现它采用datepart作为其第一个参数。

可能的日期部分值包括daydayofyear

据我了解,dayofyear是一年中的第几天(例如,2 月 2 日是 33),day是该月的第几天(因此 2 月 2 日是 2)。但是,我不明白 DATEDIFF 函数的区别。

这里有些例子:

select DATEDIFF(dayofyear, '2012-01-01', '2012-02-02')
returns: 32

select DATEDIFF(day, '2012-01-01', '2012-02-02')
returns: 32

select DATEDIFF(dayofyear, '2011-02-01', '2012-02-02')
returns: 366

select DATEDIFF(day, '2011-02-01', '2012-02-02')
returns 366
Run Code Online (Sandbox Code Playgroud)

对于 DATEDIFF() 而言,dayofyearday是否等效?

Tho*_*ger 5

是的,对于 来说效果相同DATEDIFF()。对于像 之类的算术函数DATEDIFF(),它将具有相同的结果,因为数学仍然考虑相同的单位:无论是 forday还是dayofyear它们都仍然以天为单位。