Подтвердить что ты не робот

MySQL dateTime range Query Issue

У меня есть быстрый вопрос. У меня есть db таблица аудита с столбцом 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 из этого месяца до сегодняшнего дня. Я что-то упустил? почему он работает сам по себе, но не тогда, когда я добавляю вторую дату? Я, вероятно, что-то пропускаю.

4b9b3361

Ответ 1

Try:

SELECT * FROM util_audit WHERE `DATED` BETWEEN "2012-03-15" AND "2012-03-31";

Ответ 2

Есть несколько краевых случаев, которые нужно поймать здесь, используя правильную дату окончания, если элементы 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';

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

Ответ 3

Насколько я знаю, даты в 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';