2015-05-07 68 views
0

我正在將DB2數據源中的記錄導入MS SQL Server目標。 記錄的日期格式爲20150302/YYYYMMDD,但我只希望根據當前服務器日期計算最近14天的記錄。以YYYYMMDD格式選擇DB2日期的最新記錄

請告訴我們如何根據這個日期格式選擇DATEADD(d, - 1, { fn CURDATE() })

謝謝!

回答

0

這將是更好地做到這一點的DB2側,以減少帶過來的記錄數。

此外,從性能角度來看,將靜態日期轉換爲數字日期並與表格中的列進行比較會更好。而不是將表格中的數字日期轉換爲實際的日期類型進行比較。

where numdate >= int(replace(char(current_date - 14 days,iso),'-','')) 

這樣做可以讓您利用索引而不是numdate。另外,DB2只需要執行一次這種轉換。

根據您的平臺&版本,您可能有一種更簡單的方法將日期數據類型轉換爲數字日期。但是上面的這些工作適用於DB2,適用於大多數(所有?)DB2版本和平臺。

您可能會發現值得創建一個UDF來爲您執行此轉換。

0

如果你想在SQL Server中的邏輯,那麼你是幸運的,因爲你可以YYYYMMDD格式只是轉換爲日期:

where cast(datecol as date) >= cast(getdate() - 14 as date) 

(這不承擔任何將來的日期。)

如果要做到這一點的DB2的一面,你可以使用to_date()

where to_date(datecol, 'YYYYMMDD') >= current date - 14 days