Я пытаюсь запросить данные для нескольких диапазонов дат. Это то, что я писал:Запрос MSSQL несколько диапазонов дат
Select Datetime, Round(value,3) As v
From myTable
Where charfield = 'WHATEVER'
And ((Datetime between '2014-02-01 00:00' AND '2014-02-01 23:59')
OR (Datetime between '2014-02-02 00:00' AND '2014-02-02 23:59')
OR (Datetime between '2014-02-03 00:00' AND '2014-02-03 23:59')
OR (Datetime between '2014-02-04 00:00' AND '2014-02-04 23:59'))
Но я только получить данные из последнего диапазона ('2014-02-04'
), я не знаю, почему. Я уверен, что есть данные и в других интервалах.
Пожалуйста, игнорируйте тот факт, что интервалы последовательны, это всего лишь пример. В реальном коде интервалы интервалов полностью произвольны.
Как примечание, если вам интересно время, обычно разумнее использовать полуоткрытый интервал (включительно начальную точку, конечную точку) и предать использование 'BETWEEN' - то есть' DateTime> = '20140201' и DateTime <'20140202'' будет вашим первым диапазоном. –
[Кажется, все в порядке для меня] (http://sqlfiddle.com/#!3/16ac0/1) - Вы уверены, что есть данные? Есть ли еще вопрос, который вы пропустили для упрощения? – GarethD
Вы передаете эти даты как строку или переменные типа datetime? Вы можете получить некоторые ошибки при неявном кастинге из varchar. – jean