如何在两个不同年份的两个日期之间获取数据?

时间:2014-01-02 09:31:00

标签: php mysql

我的查询似乎不起作用。

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中使用日期范围的正确方法是什么?

3 个答案:

答案 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将DATEDATETIME值作为第一个参数,你不使用它,这就是为什么它不起作用(除了'$'你在'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"

这样可以正常使用