SQL создает значение DateTime из года и квартала

Я знаю год и квартал (например, «2010» и «4») для расписания -связанный этап, и я хочу выбрать / создать из него дату и время. Есть несколько изящных способов определить квартал с помощью форматов («qq») определенной даты, но не делать наоборот (или есть ли?). Это с t-sql / SQL Server.

Примечание: дата и время должны соответствовать последнему дню этого квартала.

ОБНОВЛЕНИЕ: Вот решение, которое я в итоге использовал благодаря любезности gbn , с именами переменных AaronLS, а затем укороченными и подслащенными предложением Фрэнка Калиса :-) Было важно протестировать все 4 квартала, чтобы убедиться, что год обрабатывается правильно. Спасибо всем, кто ответил!

DECLARE @TheQuarter INT
DECLARE @theYear INT
-- Note: qq = q = quarter for the datepart
SET @TheQuarter = 1
SET @TheYear = 2011
SELECT DATEADD(YEAR, @TheYear-1900, DATEADD(qq, @TheQuarter, -1))
-- 2011-03-31 00:00:00.000

SET @TheQuarter = 2
SET @TheYear = 2011
SELECT DATEADD(YEAR, @TheYear-1900, DATEADD(qq, @TheQuarter, -1))
-- 2011-06-30 00:00:00.000

SET @TheQuarter = 3
SET @TheYear = 2011
SELECT DATEADD(YEAR, @TheYear-1900, DATEADD(qq, @TheQuarter, -1))
-- 2011-09-30 00:00:00.000

SET @TheQuarter = 4
SET @TheYear = 2011
SELECT DATEADD(YEAR, @TheYear-1900, DATEADD(qq, @TheQuarter, -1))
-- 2011-12-31 00:00:00.000

Вот несколько q, которые извлекают четверть с даты, но не наоборот: Вычислить последний день в ТЕКУЩЕМ квартале ; Вычислить последний день квартала ; Лучший способ хранить квартал и год в SQL Server?

5
задан Community 23 May 2017 в 11:54
поделиться