Ответ 1
Просто сделай -
Select (Getdate()+360) As MyDate
Нет необходимости использовать функцию dateadd для добавления или вычитания дней с определенной даты. Для добавления лет, месяцев, часов вам нужна функция dateadd.
Я пытаюсь добавить дни к текущей дате и ее работе, но когда я добавляю 360 дней к текущей дате, это дает мне неправильное значение.
например: Текущая дата - 11/04/2014 И я добавляю 360 дней, это должно дать мне 11/04/2015 но он показывает ту же дату 11/04/2014. год не меняется.
вот мой код
select dateadd(dd,360,getdate())
Просто сделай -
Select (Getdate()+360) As MyDate
Нет необходимости использовать функцию dateadd для добавления или вычитания дней с определенной даты. Для добавления лет, месяцев, часов вам нужна функция dateadd.
select dateadd(dd,360,getdate())
даст вам правильную дату, как показано ниже:
2017-09-30 15: 40: 37.260
Я просто выполнил запрос и проверил:
Dateadd(datepart,number,date)
Вы должны использовать его так: -
select DATEADD(day,360,getdate())
Тогда u найдет ту же дату, но другой год.
может попробовать это
select (CONVERT(VARCHAR(10),GETDATE()+360,110)) as Date_Result
Два или три способа (зависит от того, что вы хотите), скажем, мы находимся на текущей дате (в коде 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
(потому что время и время также имеют время, правильно?). Тонкий, ах?