簡體   English   中英

從相當老的 IBM iseries AS400 DB2 查詢數據(日期格式問題)

[英]Querying data from quite old IBM iseries AS400 DB2 (date format issue)

我是從數據庫查詢數據的新手,現在我目前在非常舊的(我不知道確切版本)IBM iSeries AS400 DB2 數據庫中遇到日期格式問題。 我的問題是日期存儲在這個數據庫中的三個單獨的列中作為整數(列日+列月+列年),我需要通過 Excel 中的 ODBC 連接到這個數據庫,並根據所需日期過濾幾行跨度(例如從 2019 年 12 月 1 日到 2019 年 12 月 31 日)。 在這種情況下,我不想使用 PowerQuery 進行所有修改,因為完整的表有數百萬行。 我想在 SQL 字符串中指定篩選條件,以便 PowerQuery 不必加載所有行...

我的方法如下:

我在 Excel 工作表中創建了 6 個參數單元格,其中我簡單地定義了日期從(例如單元格 1 = '01'、單元格 2 = '12' 和單元格 3 = '2019')和日期到(參數單元格 4 的相同邏輯, 5 和 6)。 然后我在我定義的 SQL 字符串中提到了這些參數單元格:

(日 >= 參數單元格 1,月 >= 參數單元格 2,年 >= 參數單元格 3)和(日 <= 參數單元格 4 等)

這對我來說非常有用,但僅當我喜歡在同一年內僅導出數百行時。 但現在我面臨一個問題,當我想從 2019 年 12 月 1 日到 2020 年 1 月 31 日導出數據時。在這種情況下,我的“邏輯”不起作用,因為 Month From 是“12”,而 Month To 是“01”。

我已經嘗試使用 concat SQL 函數的另一種方法來創建像“2019-12-01”這樣的文本列,然后將此列轉換為日期時間格式(首先轉換為 varchar8),但似乎這種方法對我不起作用,因為每次我收到一條錯誤消息:“找不到全局變量 DATETIME”。

在我向您發布我的一些代碼之前,如果您能想到更好的解決方案或方法來解決我的問題,我可以請教您嗎?

非常感謝,祝你有美好的一天:-)

一個簡單的解決方案是

select * from table where year * 100 + month between 201912 and 202001

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM