Как добавить дни к текущей дате в sql-сервере?

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

например: Текущая дата - 11/04/2014 И я добавляю 360 дней, это должно дать мне 11/04/2015 но он показывает ту же дату 11/04/2014. год не меняется.

вот мой код

select dateadd(dd,360,getdate())

Ответ 1

Просто сделай -

Select (Getdate()+360) As MyDate

Нет необходимости использовать функцию dateadd для добавления или вычитания дней с определенной даты. Для добавления лет, месяцев, часов вам нужна функция dateadd.

Ответ 2

select dateadd(dd,360,getdate()) даст вам правильную дату, как показано ниже:

2017-09-30 15: 40: 37.260

Я просто выполнил запрос и проверил:
Please check the attached image

Ответ 3

Dateadd(datepart,number,date)

Вы должны использовать его так: -

select DATEADD(day,360,getdate())

Тогда u найдет ту же дату, но другой год.

Ответ 4

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

select (CONVERT(VARCHAR(10),GETDATE()+360,110)) as Date_Result

Ответ 5

Два или три способа (зависит от того, что вы хотите), скажем, мы находимся на текущей дате (в коде tsql) -

DECLARE @myCurrentDate datetime = '11Apr2014 10:02:25 AM'

(BTW - вы имели в виду 11April2014 или 04Nov2014 в своем оригинальном посте? трудно сказать, так как datetime является предвзятой культурой. В Израиле 11/04/2015 означает 11April2014. Я знаю в США 11/04/2014 это означает 04Nov2014 Томаты томатов, я думаю)

  • SELECT @myCurrentDate + 360 - по умолчанию вычисления datetime, за которыми следует + (некоторое целое число), просто добавьте это в днях. Таким образом, вы получите 2015-04-06 10:02:25.000 - не совсем то, что вы хотели, а скорее просто фигурка в парке в ближайшее время.

  • SELECT DateADD(DAY, 365, @myCurrentDate) или DateADD(dd, 365, @myCurrentDate) даст вам "2015-04-11 10: 02: 25.000". Эти два являются синтаксическим сахаром (то же самое). Думаю, это то, чего вы хотели. Но это все еще неправильно, потому что если дата была "3 из 4" года (скажем DECLARE @myCurrentDate datetime = '11Apr2011 10:02:25 AM'), вы получите "2012-04-10 10: 02: 25.000". потому что в 2012 году было 366 дней, помните? (29Feb2012 потребляет "дополнительный" день. Почти каждый четвертый год имеет 29Feb).

  • Итак, я думаю, что вы имели в виду

    SELECT DateADD(year, 1, @myCurrentDate)
    

    который дает 2015-04-11 10:02:25.000.

  • или еще лучше

    SELECT DateADD(year, 1, DateADD(day, DateDiff(day, 0, @myCurrentDate), 0))
    

    который дает вам 2015-04-11 00:00:00.000 (потому что время и время также имеют время, правильно?). Тонкий, ах?