1

我有以下 where 子句

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

created_on时间戳在哪里。

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

笔记 :

我需要采用特定格式的日期

4

2 回答 2

1

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

WHERE l.created_on 
BETWEEN UNIX_TIMESTAMP('2012/02/06') AND UNIX_TIMESTAMP('2013/02/07')
于 2013-02-18T08:12:02.030 回答
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')
于 2013-02-18T08:09:46.213 回答