将打包的DB2 iseries值转换为YYYY-MM-DD

时间:2018-03-20 17:12:20

标签: db2 db2-400

我正在尝试从DB2 Iseries系统中选择日期字段大于今年第一天的记录。

但是,我选择的日期字段实际上是PACKED字段,而不是真实日期。

我正在尝试将它们转换为YYYY-MM-DD格式并获得比'2018-01-01'更大的所有内容,但无论我尝试什么,都说它无效。

目前正在尝试:

catkin build

它表示使用指定的格式字符串表达无效。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

char(dateshp)将返回类似'20180319'

的字符串

因此,您的格式字符串不应包含破折号.. 'YYYYMMDD'
例如:

select to_date(char(20180101), 'YYYYMMDD')
from sysibm.sysdummy1;

所以你的代码应该是

SELECT *
FROM table1 
WHERE val = 145
     AND to_date(char(dateShp), 'YYYYMMDD') >= '2018-01-01';

答案 1 :(得分:1)

Charles为您提供了一个解决方案,将Packed日期转换为日期字段,如果您要与另一个日期字段进行比较,这是一个很好的解决方案。但是如果你要比较一个常数值或另一个数字字段,你可以使用这样的东西:

select * 
  from table1
  where val = 145
    and dateShp >= 20180101;