从相当老的IBM iseries AS400 DB2查询数据(日期格式问题)

问题描述 投票:0回答:1

我是从数据库查询数据的新手,现在我在使用非常旧的IBM iSeries AS400 DB2数据库的日期格式时遇到问题。我的问题是日期存储在该数据库中的三个独立列中为整数(列日+列月+列年),我需要通过ODBC在Excel中连接到该数据库,并根据所需日期仅过滤几行跨度(例如从2019年12月1日至2019年12月31日)。在这种情况下,我不想使用PowerQuery进行所有修改,因为整个表具有数百万行。我想在SQL字符串中指定过滤条件,因此PowerQuery不必加载所有行...

我的做法是:

我已经在Excel工作表中创建了6个参数单元格,我在其中简单定义了Date From(例如,单元格1 ='01',单元格2 ='12'和单元格3 ='2019')和Date To(参数单元格的逻辑相同) 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”。

在向您发布一些代码之前,如果您能想到一个更好的解决方案或方法来解决我的问题,请问您一个建议吗?

非常感谢,祝您有美好的一天:-)

sql excel db2 ibm-midrange powerquery
1个回答
0
投票

一个简单的解决方案是

select * from table where year * 100 + month between 201912 and 202001
© www.soinside.com 2019 - 2024. All rights reserved.