我的查询似乎不起作用。
SELECT * FROM `test` WHERE date between '12/30/2013' and '01/05/2014'
但是,当我更改下面此查询中的日期顺序时,它似乎正在工作
SELECT * FROM `test` WHERE date between '01/01/2014' and '01/05/2014'
在SELECT中使用日期范围的正确方法是什么?
答案 0 :(得分:3)
它不起作用,因为日期不是ISO 8601格式:例如“2013-12-30”。
BETWEEN
子句进行字符串比较,因此您需要在数据库中使用正确的日期格式,或使用DATE_FORMAT()
或STR_TO_DATE(str,format)
格式化日期。
修改强>:
尝试此查询,如果您将日期存储为格式为%m/%d/%Y
的字符串,这将是一个错误的idead,MySQL具有内置的DATE
格式:
SELECT * FROM test where STR_TO_DATE(date, '%m/%d/%Y') between STR_TO_DATE('01/01/2014', '%m/%d/%Y') and STR_TO_DATE('01/05/2014','%m/%d/%Y');
DATE_FORMAT
MySQL将DATE
或DATETIME
值作为第一个参数,你不使用它,这就是为什么它不起作用(除了'$'你在'Y'之前用'%'代替'%'
答案 1 :(得分:1)
一起使用php和sql获取结果如下
$date1 = date("Y-m-d", strtotime('12/30/2013'));
$date2 = date("Y-m-d", strtotime('01/05/2014'));
$sql = "SELECT * FROM `test` WHERE date between '".$date1."'
and '".$date2."'";
答案 2 :(得分:0)
select * from test where date between "2013-12-30" and "2014-01-05"
这样可以正常使用