我有以下where子句
AND DATE_FORMAT( l.created_on, "%d/%m/%Y" ) BETWEEN '06/02/2013' AND '07/02/2013'
其中created_on
是时间戳。
现在由于某种原因,查询也返回前几个月的行。有谁知道为什么?
注意:
我需要日期为特定格式
答案 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')