2011-07-08 54 views
5

這兩個日期都存儲在一個表中。如果date1更大,我想返回date1,如果date2更大我想返回date2。我希望他們成爲更大的查詢的一部分,所以我想要一個主查詢,但如果這是不可能的,我可以使用一個臨時表,然後使用第二個查詢。該代碼將在存儲過程中執行。比較表中的兩個日期並使用SQL返回更大的值

+4

讓我猜測,日期存儲爲VARCHAR(20)? – SQLMason

+0

兩個日期字段,實際上我認爲我可以用case語句,但是現在對此沒有多少思考。我正在使用SQL 2008,抱歉沒有提到 –

回答

12

這將是在標準的SQL CASE語句

CASE WHEN date1 >= date2 THEN date1 ELSE date2 END 

有一些RDBMS,將​​做到這一點,如Excel做最大但這是標準的具體功能...

2

你可以SELECT GREATEST('1776-07-04', '1977-08-16') 。它應該返回最近的日期(不一定是最好的日期)。

+0

不是標準函數 - DB2沒有這個函數(您可能會使用MAX,而這似乎是供應商特定的用途)。也就是說,如果它屬於你的平臺,那麼它很好用(我會在DB2上使用MAX,儘管它確實使它更便於使用)。 –

+0

謝謝救了我一堆時間! –

+0

@ X-Zero我稱雙關與標準雙打,並且爭取雙關。 –