嘿,我的查询工作正常,但由于某种原因,今天它没有,我怀疑它与月变化有关。
此查询:
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
答案 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
中或更改您的逻辑