在从数据库中查询数据方面,我是个新手,现在,我对非常旧的(我不知道确切版本) IBM iSeries AS400 DB2数据库的日期格式有问题。我的问题是,此数据库中的日期存储在三个单独的列中,作为一个整数(列日+列、月+列年),我需要通过Excel中的ODBC连接到这个数据库,并根据所需的日期跨度(例如从2019年12月1日到2019年12月31日)过滤几行。在这种情况下,我不想使用PowerQuery进行所有的修改,因为完整的表有数百万行。我希望在string中指定筛选条件,这样PowerQuery就不必加载所有行.
我的方法如下:
我在Excel表中创建了6个参数单元格,其中简单地定义了日期(例如单元格1= '01‘、单元格2= '12’和单元格3= '2019')和日期(参数单元格4、5和6的逻辑相同)。然后,我在SQL字符串中提到了这些参数单元格,其中我定义了:
(日>=参数单元1,月份>=参数单元2,年份>=参数单元3)和(日<=参数单元4等)
对我的非常有用,但只有当我喜欢在同一年内输出几百行时,才会这样做。但是现在我面临一个问题,当我喜欢从2019年12月1日到2020年1月31日出口数据的时候。在这种情况下,我的“逻辑”不能工作,因为月份从'12‘和月到'01’。
我尝试了另一种方法,使用concat函数创建像'2019-12-01‘这样的文本列,然后将该列转换为日期时间格式(先转换为varchar8 ),但是这种方法似乎对我不起作用,因为每次我收到一个错误,上面写着:“找不到全局变量日期时间”。
在我给你发一些我的代码之前,我可以问你一个建议吗,如果你能想出一个更好的解决方案或方法来解决我的问题吗?
非常感谢,并祝您愉快:)
发布于 2020-01-24 04:57:47
一个简单的解决办法是
select * from table where year * 100 + month between 201912 and 202001
https://stackoverflow.com/questions/59896454
复制相似问题