与日期格式的日期比较未按预期执行

时间:2013-05-01 08:19:38

标签: mysql sql

嘿,我的查询工作正常,但由于某种原因,今天它没有,我怀疑它与月变化有关。

此查询:

select 
if((date_format("28/04/13","%d/%m/%y") < date_format(NOW(),"%d/%m/%y")),'ok','not ok')

虽然这个词应该符合,但会打印not ok

我的值实际上不是字符串,而是TIMESTAMP列。

注意:我希望它仅在一天过去后显示ok,此后date_format 我的真实查询在where子句中有这些参数来获取记录,如果日期不是今天而不是今天6之后。这是完整的子句不起作用:

and ifnull(date_format(a.daily_check,"%d/%m/%y"),
date_format(now()- interval 2 day,"%d/%m/%y")) < NOW()
and ifnull(date_format(a.daily_check,"%d/%m/%y 06:00"),
now()- interval 2 day) < date_format(NOW(),"%d/%m/%y %h:%I")

任何人都知道为什么?

我在使用MySql版本5.5.28

1 个答案:

答案 0 :(得分:0)

您不应该使用DATE_FORMAT(),而应使用STR_TO_DATE()

IF(STR_TO_DATE('28/04/13', '%d/%m/%y') < CURDATE(), 'ok', 'not ok')

DATE_FORMAT() =&gt;日期到字符串
STR_TO_DATE() =&gt;字符串到目前为止

您的问题是,因为您使用date_format字符串比较,而不是日期。将其包装在str_to_time中或更改您的逻辑