В настоящее время я работаю над запросом, который возвращает записи из диапазона дат. Идеальным для начала является все, начиная с 2015 года. Теоретически, не следует ли каждому из трех операторов SET задавать переменную до 2015 *?SQL YEAR (GETDATE())
DECLARE @startDate datetime;
SET @startDate = '20150101';
SET @startDate = YEAR(GETDATE());
SET @startDate = DATEPART(yyyy,GETDATE());
Только первая, жестко закодированная дата, ведет себя так, как ожидалось. Остальные два возвращают ВСЕ записи, которые запрашиваются. Я что-то упустил?
* РЕДАКТИРОВАТЬ: Извиняюсь за то, насколько непонятно, что я был с этим изначально. В принципе, @startDate
должен быть установлен в 01-01-XXXX, где XXXX - это то, к чему относится сегодняшняя дата года. Он сравнивается с другой переменной DATETIME
. Надеюсь, что это прояснит ситуацию.
Как эти значения используются в 'where' положение, вы можете добавить запрос. Второй третий '@ startDate' будет иметь эту дату '1905-07-09 00: 00: 00.000' –
У вас должен быть индекс в столбце даты таблицы, а затем использовать дату, чтобы он мог использовать этот индекс. Итак, WHERE myDate> = '1/1/2015' – JBrooks
'WHERE ([Date Requested])> = (@startDate)' – Eiketsu