Первый день следующего года для SQL Server? - PullRequest
2 голосов
/ 24 августа 2009

Это не должно быть так сложно. Мне просто нужно следующее:

SET @DueDate = CONVERT (DATETIME, '01/01/2010')

Однако мне это нужно прагматично, чтобы в марте 2010 года была указана дата «01.01.2011».

Я знаю, что это просто, но мой мозг не придумывает это. Я уверен, что это с DateAdd и getdate().

Ответы [ 6 ]

7 голосов
/ 24 августа 2009

Количество границ года между текущим и нулевым годом, кроме одного (31 декабря 1899 г.), добавьте обратно.

SELECT DATEADD(year, DATEDIFF(year, -1, GETDATE()), 0)

Давайте попробуем назначить дату в следующем году, чтобы получить 2011 год. Потому что 1 января 2010 года - начало следующего года в 2009 году ...

SELECT DATEADD(year, DATEDIFF(year, -1, '2010-03-21'), 0)
2 голосов
/ 24 августа 2009

Основано на статье журнала базы данных: Как рассчитать различные даты SQL Server :

Первый день Следующий Год

Я использую интервал года (гг) для отображения первого дня следующего года следующего .

выберите DATEADD (гг, DATEDIFF (гг, -1, getdate ()), 0)

1 голос
/ 19 июня 2013

Кстати, с SQL 2012 вы можете сделать DATEFROMPARTS(YEAR(@date) + 1, 1, 1). В вашем случае DATEFROMPARTS(YEAR(GETDATE()) + 1, 1, 1)

Наконечник шляпы до https://stackoverflow.com/a/13873750/155892

0 голосов
/ 12 января 2016

Используя некоторые части примеров выше, вы также можете сделать это. Теперь предполагается, что ваш приемлемый формат даты соответствует M-d-yyyy.

DATEADD(year, 1,'1-1-'+convert(varchar,DATEPART(YYYY,GetDate())))

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

0 голосов
/ 24 августа 2009

Вы можете добавить один к текущему году, затем согласовать с 01 января, затем преобразовать обратно в дату:

select CONVERT(datetime, CONVERT(VARCHAR(20), YEAR(GETDATE())+1) + '.01.01')
0 голосов
/ 24 августа 2009

Возможно, создайте таблицу с датами первого года, а затем выберите самую маленькую, которая больше вашей даты.

Возможно, просто соедините строку, '01 / 01 '+ (MyYear + 1)?

...