在mysql where子句之间不起作用

时间:2015-01-21 06:58:44

标签: php mysql date where between

我正在尝试使用where子句中的BETWEEN从日期范围中选择数据,但它不会返回正确的结果。日期字段的格式为'mm/dd/YYYY',类型为{ {1}} 我的查询,

varchar

但结果包含2014年的数据。

任何人都可以帮助我

6 个答案:

答案 0 :(得分:7)

您需要将日期字符串转换为实际日期

select * from time_track 
where STR_TO_DATE(track_date ,'%d/%m/%Y') between '2015-01-01' and '2015-01-21'

或者甚至更好地使用该列的日期数据类型。

然后您不需要转换查询中的数据,并且可以使用索引使其运行速度超快。

答案 1 :(得分:1)

我得到了答案。

SELECT * FROM `time_track` where DATE_FORMAT(STR_TO_DATE(track_date, '%c/%d/%Y'), '%Y-%m-%d') between '2015-01-01' and '2015-01-21'

答案 2 :(得分:0)

尝试这种甲酸盐 select * from time_track track_date> =' 2015-01-01 00:00:00'和track_date< =' 2015-01-01 00:00:00'

答案 3 :(得分:0)

首先转换您选择的两个日期

$from=strtotime(date("Y-m-d H:i:s", strtotime($yourfromdate)))
$to=strtotime(date("Y-m-d H:i:s", strtotime($yourtodate)))

select * from time_track where track_date>='$from' and track_date<='$to'

答案 4 :(得分:0)

您的日期格式不正确。 您必须在查询中使用此格式:yyyy-mm-dd。

从time_track中选择*,其中'2015-01-01'和'2015-01-21'之间的track_date

答案 5 :(得分:0)

对于mysql between子句预期工作,理想值将是整数,日期,时间或日期时间。尝试将数据类型从varchar更改为datetime。那会做你的比较工作。