我想通过增加其他日期列来设置DATE类型的列,但也要使其不低于其他日期(常量)。
对于第一部分,我使用:
UPDATE `customers` set `expiry_date` = DATE_ADD(date,INTERVAL 3 YEAR)
现在我正在寻找一些像MAX(d1,d2)这样的功能,这个功能需要两个以后的日期。
我看到这样的构造:
case when d1 > d2 then d1 else d2 end
也许它有效,但需要两次输入d1 / d2。 是不是像MAX(d1,d2)这样的函数会评估每个参数一次?
答案 0 :(得分:2)
我不知道你是否正在寻找这个,但MySQL有GREATEST
函数,它会返回列表中的最高值,例如。
SELECT GREATEST(1, 5, 2, 7, 10, 3)
将产生10
。
答案 1 :(得分:0)
您是否尝试过GREATEST()
功能?
如果它不能直接与日期一起使用,请先将日期转换为数字,然后重新转换结果。
答案 2 :(得分:0)
您可以使用DATEDIFF()
UPDATE `customers`
set `expiry_date` = ( case when DATEDIFF(d1,d2)<=0
then d1
when DATEDIFF(d1,d2)>0
then d2
end case
)