mySQL dateTime range Запрос Выпуск - PullRequest
28 голосов
/ 30 марта 2012

У меня быстрый вопрос.У меня есть таблица аудита БД с колонкой datetime.(т.е. 2012-03-27 00:00:00), и я создаю запрос mySQL, который возвращает набор строк, если дата находится между двумя датами, которые я ему даю.

на данный моментмой запрос выглядит так:

SELECT * FROM util_audit WHERE DATED >= DATE(03/15/2012) AND DATED <= DATE(03/31/2012);

, если я просто использую

SELECT * FROM util_audit WHERE DATED >= DATE(03/15/2012); 

Он вернет все мои записи, потому что они были датированы на этой неделе.

Я такжепопробовал это:

SELECT * FROM util_audit WHERE DATED >= '02/15/2012 00:00:00' AND DATED <= '03/31/2012 00:00:00';

и ничего!Он вернет ноль строк, когда я знаю, что все они датированы с 27 числа этого месяца до сегодняшнего дня.Я что-то здесь упускаю?почему это работает само по себе, а не когда я добавляю второе свидание? Я, наверное, что-то упускаю.

Ответы [ 3 ]

48 голосов
/ 30 марта 2012

Попробуйте:

SELECT * FROM util_audit WHERE `DATED` BETWEEN "2012-03-15" AND "2012-03-31";
13 голосов
/ 14 июля 2013

Есть несколько крайних случаев, которые необходимо отловить здесь, используя правильную дату окончания, если не игнорируются элементы 31-го числа:

SELECT * FROM util_audit 
WHERE DATED >= '2012-02-15 00:00:00' AND DATED <= '2012-03-31 23:59:59';

SELECT * FROM util_audit 
WHERE DATED BETWEEN '2012-02-15 00:00:00' AND '2012-03-31 23:59:59';

Или вы можете перенести дату окончания вперед и использовать:

SELECT * FROM util_audit 
WHERE DATED >= '2012-02-15 00:00:00' AND DATED < '2012-04-01';

SELECT * FROM util_audit 
WHERE DATED BETWEEN '2012-02-15 00:00:00' AND '2012-04-01';

Просто сам сталкивался с этим, поэтому надеюсь, что это поможет другим людям найти эту страницу.

6 голосов
/ 30 марта 2012

Насколько я знаю, даты в MySql представлены в формате yyyy-MM-dd hh:mm:ss, поэтому вам нужно сделать это:

SELECT * FROM util_audit 
WHERE DATED >= '2012-02-15 00:00:00' AND DATED <= '2012-03-31 00:00:00';

Или даже лучше:

SELECT * FROM util_audit 
WHERE DATED BETWEEN '2012-02-15 00:00:00' AND '2012-03-31 00:00:00';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...