1

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

这个查询:

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

4

1 回答 1

0

你不应该使用DATE_FORMAT(),而是STR_TO_DATE()

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

DATE_FORMAT() => 日期到字符串
STR_TO_DATE() => 字符串到日期

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

于 2013-05-01T08:20:59.067 回答