Нужно получать записи из базы данных MySQL по дате только из поля datetime - PullRequest
0 голосов
/ 27 марта 2009

Это кажется довольно простым, но у меня болит голова. В моей таблице событий есть столбец с именем date_time, и его тип - datetime.

Мне нужно написать запрос, который будет получать события по дням.

Пример таблицы

============================
| id |      date_time      |
============================
| 5  | 2009-03-27 14:16:00 |
============================

Теперь мне нужно получить событие с Id = 5, за исключением того, что у меня есть только дата (метка времени unix) для работы. Я пробовал много вещей, таких как преобразование в формат mysql и выбор между 2009-03-27 00:00:00 и 2009-03-28 00:00:00, но я не смог заставить его работать.

Каков наилучший способ сделать это?

Большое спасибо.

Ответы [ 3 ]

8 голосов
/ 27 марта 2009
SELECT * FROM table
WHERE date_time BETWEEN '2009-03-27 00:00:00' AND '2009-03-27 23:59:59'

Должен это сделать.

В качестве альтернативы попробуйте это:

SELECT * FROM table WHERE DATE(date_time) = '2009-03-27'

Функция DATE () извлекает часть даты из столбца datetime.

0 голосов
/ 27 марта 2009

МЕЖДУ небезопасно, если временные метки включают доли секунды. Это всегда безопасно:

SELECT *
FROM table
WHERE date_time >= '2009-03-26 00:00:00' AND date_time < '2009-03-27 00:00:00'
0 голосов
/ 27 марта 2009
select * from table WHERE date(date_time) = '2009-03-27' works for me

если у вас есть метка времени Unix, вы также можете сделать

select * from table WHERE UNIX_TIMESTAMP(date_time) = your_timestamp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...