我與存儲在多個領域日期爲整數(模擬字段名)的數據庫工作:按日期範圍過濾時的日期被分成多個領域
- 世紀:CC01:20
- 年:YR01:13
- 月份:MO01:7
- 日:DY01:22
我可以制訂日期作爲這樣:DATE((CC01 * 100 + YR01) || '-' || MO01 || '-' || DY01)
問題是當我需要篩選一系列日期時。例如,如果我要選擇過去90天裏,我可以寫這樣的事情...
WHERE DATE((CC01 * 100 + YR01) || '-' || MO01 || '-' || DY01) >= CURRENT DATE - 90 DAYS
這裏的問題是性能。我正在尋找一種有效的方法來編寫這個公式,它將函數限制在方程的右邊。
這裏是將與今天的日期工作爲例(我並不需要擔心世紀,我離開了一些細節):
WHERE CC01 = 20 AND YR01 >= RIGHT(YEAR(CURRENT DATE - 7 DAYS),2) AND MO01 >= MONTH(CURRENT DATE - 7 DAYS) AND DY01 >= DAY(CURRENT DATE - 7 DAYS)
這隻能是因爲要回7天使我們保持當前的月份和年份。我也不希望有一大堆的AND和OR(如果可能的話)。
選擇它作爲額外的列,所以你只需要定義一次?並在where子句中使用該列。也許它更容易將日期轉換爲UNIX時間戳(整數),並限制'BETWEEN val1和val2' – UrGuardian4ngel
我的問題是該表有幾億條記錄。表值中的任何函數都將永遠處理並使用太多的臨時空間。 –
您可以創建一個將多個日期整數轉換爲DB2日期的DB2視圖。您已經提供了該公式。 –