Проблемы с пониманием того, как заставить предложение Where работать с этой структурой даты.SQL Date Logic
Вот основная логика. Я хочу данные только с предыдущего марта 1 и заканчивая датой дня.
Пример # 1: Так сегодня 13 февраля 2015 Это будет означать, мне нужно данные между (2014-03-01 и 2015-02-12)
Пример # 2: Say сегодня 20 марта 2015 Это Это означало бы, мне нужно данные между (2015-03-01 и 2015-03-19)
где логика может работать, но он не хотел бы преобразовать «3/1/'+ год. Но я не уверен, как еще это выразить. Первое предложение - это прекрасная секция Case, которая сломана.
Запрос
SELECT [Request Date], [myItem]
FROM myTable
WHERE [Request Date] < CONVERT(VARCHAR(10), GETDATE(), 102)
AND [Request Date] = CASE WHEN
CONVERT(VARCHAR(10), GETDATE(), 102) <
CONVERT(VARCHAR(12), '3/1/' + DATEPART (year , GETDATE()) , 114)
THEN [Request Date] > CONVERT(VARCHAR(12), '3/1/' + DATEPART (year , GETDATE()-365) , 114)
ELSE [Request Date] > CONVERT(VARCHAR(12), '3/1/' + DATEPART (year , GETDATE() , 114)
END
Я также попытался
AND [Request Date] = CASE WHEN
CONVERT(VARCHAR(10), GETDATE(), 102) <
'3/1/' + CONVERT(VARCHAR(12), DATEPART (YYYY , GETDATE()))
THEN [Request Date] > '3/1/' + CONVERT(VARCHAR(12), DATEPART (YYYY , GETDATE()-364))
ELSE [Request Date] > '3/1/' + CONVERT(VARCHAR(12), DATEPART (YYYY , GETDATE()))
END
Вы можете указать тип SQL, который вы используете? –
выглядит как TSQL – dotjoe
Извините, я должен был указать это. Это SQL 2008 – Flexpadawan