Слава Україні!

MySQL: запросы DATE BETWEEN

Выборка значений из базы данных за определенный период. MySQL
Часто бывает необходимо выбрать значения из базы данных за определенный период. Чтобы не забыть, сделал вот такую заметку с подборкой запросов `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 по 27.02
втрати противника
орієнтовно склали:
411550 ( +850 ) особового складу
6556 ( +1 ) танків
12494 ( +16 ) бойових бронемашин
10009 ( +16 ) артилерійських систем
1000 ( +0 ) РСЗВ
686 ( +0 ) засоби ППО
340 ( +0 ) літаків
325 ( +0 ) гелікоптерів
13065 ( +28 ) автомобільної техніки
25 ( +0 ) кораблі / катери
1912 ( +2 ) крилаті ракети
7729 ( +22 ) БПЛА
1588 ( +8 ) спец. техніки
4 ( +0 ) установок ОТРК/ТРК
1 ( +0 ) war.submarines

Поиск