Хотите ли вы, чтобы все строки, которые startDate
были '2012-02-22'
или более поздними, а endDate
- '2012-02-22'
или предыдущими? Затем используйте это:
SELECT *
FROM house
WHERE startDate >= '2012-02-22'
AND endDate < '2012-02-26' --- notice the `<`, not `<=`
--- and the `day+1`
При использовании дат с продуктами SQL лучше использовать этот формат в запросах и выражениях: '20120222'
или этот (который мне легче читать: '2012-02-22'
.
Использование слешей, таких как '2012/02/22'
или любой другой порядок, кроме Year-Month-Day
, не рекомендуется.
Нет необходимости включать временную часть. '2012-02-22 00:00:00'
совпадает с '2012-02-22'
.
Использование endDate <= '2012-02-25 00:00:00'
означает, что любая строка с датой 25 февраля 2012 года, но после полуночи ('00:00:00'
) не будет соответствовать условию. Если вам нужны эти строки, используйте вместо этого endDate < '2012-02-26'
.
Вы можете использовать DATE(endDate) <= DATE('2012-02-25 00:00:00')
или DATE(endDate) <= '2012-02-25'
, но эти условия не могут быть использованы, поэтому ваши запросы не смогут использовать индекс для endDate
.