sql时间范围 mySQL日期时间范围查询问题




sql时间范围 (3)

我有一个快速的问题。 我有一个数据库审计表与日期时间列在其中。 (即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日到今天。 我在这里错过了什么? 为什么它自己工作,但不是当我添加第二个日期?我可能忽略了一些东西。


有几个边缘情况需要通过使用正确的结束日期来捕捉,如果没有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';

尝试:

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






datetime