我想查詢2個不同的日期字段和一個日期字段(datefield2)具有空值。我的日期字段是CCYYDDD,並且我通常按日期(數字(日期字段))將其轉換爲月/日/年(yyyy)作爲NewDate。COALESCE db2 date
這種失敗
SELECT type, date(digits(datefield1)) AS DateEntered, coalesce(varchar(datefield2),'') as Renewed FROM MYDATA WHERE date(digits(datefeld1)) between '06/01/2015' and '6/30/2015' OR date(digits(coalesce(varchar(rendt7),''))) between '06/01/2015' and '06/30/2015'
下成功
SELECT type, date(digits(datefield1)) AS DateEntered, coalesce(varchar(datefield2),'') as Renewed FROM MYDATA WHERE date(digits(datefeld1)) between '06/01/2015' and '6/30/2015' OR coalesce(varchar(rendt7),'') between '2015152' and '2015181
我如何可以查詢在我的日期字段包含空值?我計劃在日期範圍值中傳遞參數,而只是通過mm/dd/yyyy。
1)不要使用'BETWEEN'(全部),或任何其他含上限('<=')上的任何東西沒有一個明確的整數計數,因爲你可以得到錯誤的數據。從技術上講,'DATE'數據類型實際上並不具有格式(僅用於顯示),但如果使用正確的主機變量類型,則這不是問題。在列上調用'DATE(DIGITS(...))'會使優化器忽略索引。但是,如果您將傳入主機變量翻譯爲列類型,則可以使用索引(因爲格式是可搜索的 - 儘管使用實際日期類型更好)。 –