我有一个快速的问题.我有一个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);
Run Code Online (Sandbox Code Playgroud)
如果我只是用
SELECT * FROM util_audit WHERE DATED >= DATE(03/15/2012);
Run Code Online (Sandbox Code Playgroud)
它将返回我的所有记录,因为它们本周已经过时了.
我也试过这个:
SELECT * FROM util_audit WHERE DATED >= '02/15/2012 00:00:00' AND DATED <= '03/31/2012 00:00:00';
Run Code Online (Sandbox Code Playgroud)
没别的了!它将返回零行,当我知道我所有这些都是从本月27日到今天.我在这里错过了什么吗?为什么它自己工作,但是当我添加第二个日期时呢?我可能忽略了一些东西.
小智 51
尝试:
SELECT * FROM util_audit WHERE `DATED` BETWEEN "2012-03-15" AND "2012-03-31";
Run Code Online (Sandbox Code Playgroud)
Jam*_*s F 14
如果没有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';
Run Code Online (Sandbox Code Playgroud)
或者你可以推进结束日期并使用:
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';
Run Code Online (Sandbox Code Playgroud)
刚刚遇到这个,所以希望如果其他人找到这个页面会有所帮助.
据我所知,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';
Run Code Online (Sandbox Code Playgroud)
甚至更好:
SELECT * FROM util_audit
WHERE DATED BETWEEN '2012-02-15 00:00:00' AND '2012-03-31 00:00:00';
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
89568 次 |
最近记录: |