Точность полей даты и времени запроса MySQL - PullRequest
1 голос
/ 07 февраля 2012

Я использую MySql 5.5,

Я использую следующий запрос к таблице учета радиусов.

  • query1:

    SELECT *FROM database.table WHERE framedipaddress = '192.168.1.1' и '2011-09-09' МЕЖДУ acctstarttime AND acctstoptime;

Поля acctstarttime и acctstoptime имеют тип datetime, отформатированный как YEAR-MT-DY HR:MN:SC.

Использование query2 показывает, что мои результаты query1 не всегда точны, query1 иногда ничего не возвращает или неверная строка.

  • query2:

    SELECT * FROM database.table WHERE framedipaddress = '192.168.1.1' ORDER BY acctstarttime DESC LIMIT 0, 400;

Существует ли другой метод для запроса двух datetime, поля или это проблема с базой данных / данными?

Приветствуются любые указания на ошибки в моей логике.

Вот вопрос для запроса у меня сейчас.

1 Ответ

1 голос
/ 07 февраля 2012

'2011-09-09' = '2011-09-09 00:00:00' Таким образом, вы запрашиваете только те учетные записи, у которых было время начала действия до этого времени и время действия после этого времени.

Если вы ищете учетные записи, которые были запущены в 2011-09-09.Тогда вы можете сделать

...
WHERE
acctstarttime >= '2011-09-09' AND acctstarttime < '2011-09-10'

Если вы ищете учетные записи, которые были начаты и закончились 2011-09-09.Затем выполните:

...
WHERE
acctstarttime >= '2011-09-09' AND acctstarttime < '2011-09-10' AND
acctstoptime >= '2011-09-09' AND acctstoptime < '2011-09-10' AND

К вашему сведению, если вы используете BETWEEN, он включает в себя границы, поэтому он будет включать 2011-09-10 00:00:00.

...