我正在尝试使用where子句中的BETWEEN
从日期范围中选择数据,但它不会返回正确的结果。日期字段的格式为'mm/dd/YYYY'
,类型为{ {1}}
我的查询,
varchar
但结果包含2014年的数据。
任何人都可以帮助我
答案 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。那会做你的比较工作。