gpt4 book ai didi

mysql - 日期与日期格式的比较不符合预期

转载 作者:行者123 更新时间:2023-11-30 23:19:10 25 4
gpt4 key购买 nike

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

这个查询:

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

最佳答案

你不应该使用 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 中,要么更改您的逻辑

关于mysql - 日期与日期格式的比较不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16314882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com