我正在將DB2數據源中的記錄導入MS SQL Server目標。 記錄的日期格式爲20150302/YYYYMMDD
,但我只希望根據當前服務器日期計算最近14天的記錄。以YYYYMMDD格式選擇DB2日期的最新記錄
請告訴我們如何根據這個日期格式選擇DATEADD(d, - 1, { fn CURDATE() })
。
謝謝!
我正在將DB2數據源中的記錄導入MS SQL Server目標。 記錄的日期格式爲20150302/YYYYMMDD
,但我只希望根據當前服務器日期計算最近14天的記錄。以YYYYMMDD格式選擇DB2日期的最新記錄
請告訴我們如何根據這個日期格式選擇DATEADD(d, - 1, { fn CURDATE() })
。
謝謝!
這將是更好地做到這一點的DB2側,以減少帶過來的記錄數。
此外,從性能角度來看,將靜態日期轉換爲數字日期並與表格中的列進行比較會更好。而不是將表格中的數字日期轉換爲實際的日期類型進行比較。
where numdate >= int(replace(char(current_date - 14 days,iso),'-',''))
這樣做可以讓您利用索引而不是numdate。另外,DB2只需要執行一次這種轉換。
根據您的平臺&版本,您可能有一種更簡單的方法將日期數據類型轉換爲數字日期。但是上面的這些工作適用於DB2,適用於大多數(所有?)DB2版本和平臺。
您可能會發現值得創建一個UDF來爲您執行此轉換。
如果你想在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