1

我想通过增加其他日期列来设置 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) 这样的函数会评估每个参数一次吗?

4

3 回答 3

2

我不知道这是否是您正在寻找的,但 MySQL 具有GREATEST函数 whish 返回列表中的最高值,例如。

SELECT GREATEST(1, 5, 2, 7, 10, 3)

将产生10

于 2013-03-16T09:38:00.893 回答
0

你试过这个GREATEST()功能吗?

如果它不能直接使用日期,请先将日期转换为数字,然后重新转换结果。

于 2013-03-16T09:42:40.837 回答
0

您可以使用DATEDIFF()

UPDATE `customers` 
set `expiry_date` = ( case  when DATEDIFF(d1,d2)<=0 
                            then d1
                            when DATEDIFF(d1,d2)>0 
                            then d2
                      end case
                    )
于 2013-03-16T09:48:01.207 回答