DATEADD, DATEPART не возвращают желаемые результаты

Я не уверен, работает ли мой мозг, потому что сегодня понедельник. Я хочу добавить один год к текущему году, но получаю нежелательные результаты.

Вот что я получаю:

select current_timestamp 
Output:2012-04-23 09:57:45.777

select DATEADD(YEAR, 1, DATEPART(YEAR,current_timestamp)) 
Output: 1906-07-06 00:00:00.000

select DATEPART(year,current_timestamp) 
Output: 2012

Что-то настолько простое, как это, и по какой-то причине я не могу понять проблему.


person Mike D    schedule 23.04.2012    source источник


Ответы (3)


select DATEADD(YEAR, 1, current_timestamp)

если вам нужна только часть даты:

select DATEADD(d, 0, DATEDIFF(d, 0, DATEADD(YEAR, 1, current_timestamp) ))
person Mitch Wheat    schedule 23.04.2012
comment
Ха! Я знал, что это какая-то глупость. Я хочу, чтобы мой DATEPART был снаружи, а не внутри. т.е. выберите DATEPART(YYYY, DATEADD(YEAR, 1, current_timestamp)) - person Mike D; 23.04.2012
comment
В моем примере выше я пытался вернуть только год: выберите DATEADD(YEAR, 1, DATEPART(YEAR,current_timestamp)) но вместо этого мне нужно было выполнить часть даты следующим образом: select DATEPART(YYYY, DATEADD(YEAR, 1, current_timestamp) )) - person Mike D; 23.04.2012

Вы можете попробовать это?

выберите DATEPART(YYYY,(DATEADD(YEAR, 1,current_timestamp)))

--Это даст результат 2016

person VASANT JAGTAP    schedule 26.03.2015

SELECT cast(DATEPART(YEAR,current_timestamp) as datetime);

go return 1905-07-10 00:00:00.000 вот в чем проблема

select dateadd(year,1, current_timestamp);

вернуться 2017-07-25 23:13:49.700

person victor    schedule 25.07.2016