Mysql日期函数用于获取两个日期的后期

时间:2013-03-16 09:35:30

标签: mysql sql select

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

3 个答案:

答案 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
                    )