Php MySQLUpdate-设置未超过日期的字段
我有一个关于MySQL中case/if语句的问题,关于根据字段中日期的可能性更新字段。我有两个字段。一个包含日期(“LastDayToNotify”)和一个包含纯文本消息(“NotifyMessage”) 日期字段可以包含三个值中的一个-空字段、空字段或日期 我的问题是-是否有可能,如果有,如何在MySQL中创建一个查询,根据日期(LastDayToNotify)是否已过设置一个字段的值(NotifyMessage)?例如: 如果日期尚未过去(日期为今天或之前),请将NotifyMessage字段更新为“通用消息” 但是,如果日期字段为空、null,或者传递了日期字段,则不会执行任何操作 我在这篇文章中测试了几个修改后的答案,但无法成功解释所有3种可能的约会场景 我知道这可能是一个新手问题,但我从未遇到过这种特殊的需求Php MySQLUpdate-设置未超过日期的字段,php,mysql,sql,Php,Mysql,Sql,我有一个关于MySQL中case/if语句的问题,关于根据字段中日期的可能性更新字段。我有两个字段。一个包含日期(“LastDayToNotify”)和一个包含纯文本消息(“NotifyMessage”) 日期字段可以包含三个值中的一个-空字段、空字段或日期 我的问题是-是否有可能,如果有,如何在MySQL中创建一个查询,根据日期(LastDayToNotify)是否已过设置一个字段的值(NotifyMessage)?例如: 如果日期尚未过去(日期为今天或之前),请将NotifyMessage字
谢谢 根据我的经验,你不能用CASE语句设置值,但你可以列出一些东西。但是,这将显示为一个单独的列 例如
CASE WHEN date
然后,您必须创建更多的case语句来覆盖其他场景,例如NULL我假设您使用的是正常的字段类型(
date
或datetime
)
如果尚未将日期存储为日期类型,请查看:您可以使用以下简单查询:
UPDATE yourTable SET NotifyMessage = 'Generic Message'
WHERE LastDayToNotify <= CURDATE();
updateyourtable SET NotifyMessage='Generic Message'
其中LastDayToNotify不确定您想要的是哪种方式
=
-您的逻辑有点不清楚(“如果日期没有过去(日期是今天或之前”)我将数据存储在日期字段中,因此我认为我在这方面做得很好。就逻辑而言,我可能有误。LastDayToNotify是我们设置消息的最后一天。这意味着,如果日期已过,我们将不再提供消息,但如果日期是今天或将来,我们将设置日期,直到日期已过虽然这不是一个糟糕的答案,但是如果你解释一下为什么这个问题可以解决,以及一开始哪里出了问题,这个答案还是可以改进的。
UPDATE table
SET
NotifyMessage = 'Generic Message'
WHERE
LastDayToNotify IS NOT NULL
AND LastDayToNotify >= CURDATE();
UPDATE yourTable SET NotifyMessage = 'Generic Message'
WHERE LastDayToNotify <= CURDATE();