在DATEADD函数中的y不适用于年份。相反,我可以使用yy或年份。然而m和d工作。为什么?

时间:2016-12-05 22:52:46

标签: sql-server

SELECT DATEADD(y, 1, '20160212'); -- using y does not work.

返回的结果为'20160213'。为了获得理想的结果,我必须使用yy或year。

然而两者:

SELECT DATEADD(m, 1, '20160212'); 
SELECT DATEADD(d, 1, '20160212'); --works.

为什么?

1 个答案:

答案 0 :(得分:3)

来自docs

datepart        Abbreviations
year            yy, yyyy
quarter         qq, q
month           mm, m
dayofyear       dy, y     <--- y is already used for day of year
day             dd, d
week            wk, ww
weekday         dw, w
hour            hh
minute          mi, n
second          ss, s
millisecond     ms
microsecond     mcs
nanosecond      ns

如果您在第一个示例中注意到,则日期会增加一天,这在添加一年中的一天时会有所期待&#34;