Я знаю год и квартал (например, «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
Вот несколько вопросов, которые выбирают квартал от даты, но не наоборот: Рассчитайте последний день в текущем квартале ; Рассчитать последний день квартала ; Лучший способ хранить квартал и год в SQL Server?