Вероятно, название немного сложнее. У меня есть эта таблица:
| id_ordineX | data_start |
+------------+---------------------+
| ordine1 | 2018-08-06 08:00:00 |
| ordine1 | 2018-08-06 10:45:00 |
| ordine2 | 2018-08-06 16:20:00 |
| ordine2 | 2018-08-07 09:20:00 |
Я хочу выбрать все поля, где data_start > 2018-08-06 09:00:00
, таким образом я получаю в результате все последние 3 поля, но я хочу выбрать только результат за день 2018-08-06
, поэтому в основном я хочу получить только второе и третье поле. Как я могу выбрать только дату в формате datetime?
3 ответа
Можно использовать простые функции даты и времени:
SELECT *
FROM `table`
WHERE `data_start` > '2018-08-06 09:00:00' AND DATE(`data_start`) = '2018-08-06';
Или вы можете указать диапазон:
SELECT *
FROM `table`
WHERE `data_start` BETWEEN '2018-08-06 09:00:00' AND '2018-08-06 23:59:59';
Я бы порекомендовал написать запрос как:
SELECT t.*
FROM `table` t
WHERE `data_start` > '2018-08-06 09:00:00' AND
`data_start` < '2018-08-07';
Избегая функций в data_start
, условия WHERE
делают это более вероятным, чем индекс - если он доступен - будет использоваться для запроса.
Я также думаю, что это очень хорошо описывает логику, которую вы хотите реализовать.
Вы можете использовать дату и час
select *
from my_table
where date(date_start) = curdate()
and hour(date_start) > 9
Новые вопросы
mysql
MySQL - это бесплатная система управления реляционными базами данных с открытым исходным кодом (RDBMS), использующая язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. Д. Это разные БД, которые все используют свои собственные диалекты SQL для управления данными.