2013-03-16 637 views
1

我想通过增加其他日期列来设置DATE类型的列,但也使其不小于某个其他日期(常量)。用于获取两个日期的较晚日期的函数

对于第1部分使用:

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)这样的函数来评估每个参数一次?

回答

1

我不知道这是你在找什么,但MySQL有GREATEST函数返回列表中的最高值,例如。

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

将产生10

+0

是的,你是我的英雄,这就是我需要的东西!经过测试,它解决了我的任务。 – 2013-03-16 09:41:54

+0

不用客气':D'很高兴帮助。 – 2013-03-16 09:42:19

0

您是否尝试过GREATEST()功能?

如果它不直接与日期一起工作,请先将日期转换为数字,然后重新转换结果。

0

您可以使用DATEDIFF()

UPDATE `customers` 
set `expiry_date` = (case when DATEDIFF(d1,d2)<=0 
          then d1 
          when DATEDIFF(d1,d2)>0 
          then d2 
         end case 
        ) 
+0

正如我写的,我想避免多个d1/d2,并且他们使用了3次。 GREATEST()函数解决了这个任务。 – 2013-03-16 09:52:11

+0

好的,只读问题的前半部分 – 2013-03-16 09:54:17