Between in mysql where 子句不起作用

Between in mysql where clause not working

我正在尝试 select 在 where 子句中使用 BETWEEN 日期范围内的数据,但 return 没有正确的 result.The 日期字段格式 'mm/dd/YYYY' 类型为 varchar 我的查询,

select * from time_track where track_date between '01/01/2015' and '01/21/2015'

但结果包含 2014 年的数据。

谁能帮帮我

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

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

或者为该列使用日期数据类型更好。

那么您不需要转换查询中的数据,可以使用索引,这使得它 运行 超级快。

试试这个合成器 select * 来自 time_track 其中 track_date >= '2015-01-01 00:00:00' AND track_date <= '2015-01-01 00:00:00'

我得到了答案。

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'

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

$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'

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

select * 来自 time_track 其中 track_date 在“2015-01-01”和“2015-01-21”之间

马可

要使 mysql between 子句按预期工作,理想值为整数、日期、时间或日期时间。尝试将数据类型从 varchar 更改为 datetime。这将完成您的比较工作。