Предполагалось, что вторая ссылка на дату в BETWEEN
синтаксисе волшебным образом считается «концом дня», но это не соответствует действительности .
то есть это было ожидаемо:
ВЫБРАТЬ * ИЗ ДЕЛА
ГДЕ создано_ между началом 2013-05-01 и концом 2013-05-01
но то, что действительно происходит, это:
ВЫБРАТЬ * ИЗ ДЕЛА
ГДЕ создан_ между «2013-05-01 00: 00: 00 + 00000 » и «2013-05-01 00: 00: 00 + 00000 »
Что становится эквивалентом:
SELECT * FROM CASE ГДЕ созданный_at = '2013-05-01 00: 00: 00 + 00000 '
Проблема в том , один из восприятий / ожидания о BETWEEN
которых действительно включают как нижнее значение и верхние значения в диапазоне, но не волшебно сделать дату «начала» или «конец».
BETWEEN
следует избегать при фильтрации по диапазонам дат.
Всегда используйте >= AND <
вместо
ВЫБРАТЬ * ИЗ ДЕЛА
ГДЕ (созданный_ат > = «20130501» И созданный_т < «20130502»)
круглые скобки здесь необязательны, но могут быть важны в более сложных запросах.