Ответ 1
Try:
SELECT * FROM util_audit WHERE `DATED` BETWEEN "2012-03-15" AND "2012-03-31";
У меня есть быстрый вопрос. У меня есть 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 из этого месяца до сегодняшнего дня. Я что-то упустил? почему он работает сам по себе, но не тогда, когда я добавляю вторую дату? Я, вероятно, что-то пропускаю.
Try:
SELECT * FROM util_audit WHERE `DATED` BETWEEN "2012-03-15" AND "2012-03-31";
Есть несколько краевых случаев, которые нужно поймать здесь, используя правильную дату окончания, если элементы 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';
Просто наткнулся на это сам, поэтому надеюсь, что это поможет, если другие люди найдут эту страницу.
Насколько я знаю, даты в 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';