2013-08-05 49 views
0

計算空值我有兩個日期:一個StartDateCreatedDate帶有日期

如果我說,如果StartDateNULL

CreatedDate < StartDate 

會發生什麼?

我應該使用

isnull(startdate,0) 

還是會只返回一個NULL,否則將永遠是小於StartDateStartDateNULL

+1

,當你嘗試過什麼事?至於你應該做什麼,你的商業規則是什麼? –

+1

更重要的是,當'StartDate'爲'NULL'時會發生什麼?你想達到什麼目的? –

回答

0

任何普通的比較(>,<,> =,< =,=,<>一樣,在)返回null如果它們的參數的至少一個是空;所以CreatedDate <如果StartDate爲null,則StartDate返回null。您可以測試空明確:

((CreatedDate < StartDate) or (StartDate is null)) 

或者你可以至於會發生什麼轉變起始日期值

(CreatedDate < NVL(StartDate, To_Date('1.1.1000', 'DD.MM.YYYY')) -- <- Oracle Syntax 
+0

感謝你,是一個完美的答案,我一直在尋找綜合和對點 – LoveToys

0

你必須檢查null

如果您沒有檢查null那麼您的比較將會產生unknown這就是false

0

如果同時StartDateCreatedDate可以NULL,你可以使用SQL COALESCE function提供的默認值,例如一個足夠小的日期和一個足夠大:

SELECT ... 
FROM ... 
WHERE COALESCE(StartDate, DATE '0001-01-01') < COALESCE(CreatedDate, DATE '9999-12-31') 

這裏我使用standard SQL date and time literals

:日期和時間限制,在不同的數據庫服務器有所不同。上面的例子works for the Oracle Database