2013-03-16 636 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