日期之间的查询也返回前几个月的行

时间:2013-02-18 08:08:09

标签: mysql sql select

我有以下where子句

AND  DATE_FORMAT( l.created_on,  "%d/%m/%Y" )  BETWEEN '06/02/2013' AND '07/02/2013' 

其中created_on是时间戳。

现在由于某种原因,查询也返回前几个月的行。有谁知道为什么?

注意:

我需要日期为特定格式

2 个答案:

答案 0 :(得分:1)

Mysql字符串日期格式遵循模式yyyy-mm-dd。如果您有时间戳,请不要转换为日期,只需比较时间戳。

WHERE l.created_on 
BETWEEN UNIX_TIMESTAMP('2012/02/06') AND UNIX_TIMESTAMP('2013/02/07')

答案 1 :(得分:0)

如果created_on已经是日期(数据类型),

您可以使用

直接查询它
WHERE created_on  BETWEEN '2013-02-06' AND '2013-02-07' 

但如果日期是字符串,请使用STR_TO_DATE

WHERE STR_TO_DATE(l.created_on,  '%d-%m-%Y')  BETWEEN '2013-02-06' AND '2013-02-07' 

更新1

因为您不想更改输入日期的格式,所以您需要使用STR_TO_DATE格式化

WHERE l.created_on  BETWEEN STR_TO_DATE('06/02/2013','%d/%m/%Y') AND 
                            STR_TO_DATE('07/02/2013','%d/%m/%Y')