Слава Україні!
MySQL: запросы DATE BETWEEN
Часто бывает необходимо выбрать значения из базы данных за определенный период.
Чтобы не забыть, сделал вот такую заметку с подборкой запросов `SELECT ... DATE BETWEEN`.
Поле `created_at` - тип `DATETIME`
**КОРРЕКТНЫЕ ЗАПРОСЫ**
*Запрос 1:*
- Индексы для `created_at` поля не используются.
- Условие `BETWEEN '2008-08-14' AND '2008-08-23'` преобразуется в `BETWEEN '2008-08-14 00:00:00' AND '2008-08-23 00:00:00'`.
SELECT * FROM news WHERE DATE(created_at) BETWEEN '2008-08-14' AND '2008-08-23';
*Запрос 2:*
- Оператор `BETWEEN` не используем, но тоже не самый лучший вариант,
- Индексы для `created_at` поля не используются.
SELECT * FROM news WHERE DATE(created_at) >= '2008-08-14' AND DATE(created_at) <= '2008-08-23';
*Запрос 3:*
- Строки '2008-08-14 00:00:00' и '2008-08-23 23:59:59' не приведены к типу данных `DATE`
SELECT * FROM news WHERE created_at BETWEEN '2008-08-14 00:00:00' AND '2008-08-23 23:59:59';
*Запрос 4:* Самый лучший вариант,
- привели к типу `DATETIME`,
- индексы будут использоваться
SELECT * FROM news
WHERE created_at BETWEEN
STR_TO_DATE('2008-08-14 00:00:00', '%Y-%m-%d %H:%i:%s') AND
STR_TO_DATE('2008-08-23 23:59:59', '%Y-%m-%d %H:%i:%s');
Важлива інформація
Міністерство оборони
України
України
з 24.02 по 14.05
втрати противника
орієнтовно склали:
втрати противника
орієнтовно склали:
969370 ( +1240 )
особового складу
10804 ( +2 )
танків
22501 ( +14 )
бойових бронемашин
27827 ( +47 )
артилерійських систем
1382 ( +1 )
РСЗВ
1165 ( +3 )
засоби ППО
372 ( +0 )
літаків
335 ( +0 )
гелікоптерів
48382 ( +126 )
автомобільної техніки
28 ( +0 )
кораблі / катери
3197 ( +0 )
крилаті ракети
35860 ( +82 )
БПЛА
3884 ( +0 )
спец. техніки
4 ( +0 )
установок ОТРК/ТРК
1 ( +0 )
підводні човни