Передбачалося, що посилання на другу дату в BETWEEN
синтаксисі магічно вважається "кінцем дня", але це неправда .
тобто цього очікувалося:
ВИБІР * ІЗ справ
ДЕ створено_ТЕ ПІД початок '2013-05-01' І кінець '2013-05-01'
але насправді це:
ВИБІР * ІЗ справ
ДЕ створив_БЕЗ '2013-05-01 00: 00: 00 + 00000 ' І '2013-05-01 00: 00: 00 + 00000 '
Що стає еквівалентом:
ВИБІР * ВІД випадків, де створено_at = '2013-05-01 00: 00: 00 + 00000 '
Проблема полягає в сприйнятті / очікування про BETWEEN
якому дійсно включають як нижнє значення і верхні значення в діапазоні, але не чинить чарівно зробити дату «початку» або «кінець».
BETWEEN
слід уникати під час фільтрації за діапазонами дат.
Завжди використовуйте >= AND <
натомість
ВИБІР * ІЗ справ
WHERE (created_at > = '20130501' AND created_at < '20130502')
дужки тут необов’язкові, але вони можуть мати важливе значення у складніших запитах.