我正在尝试从DB2 Iseries系统中选择日期字段大于今年第一天的记录。
但是,我选择的日期字段实际上是PACKED字段,而不是真实日期。
我正在尝试将它们转换为YYYY-MM-DD格式并获得比'2018-01-01'更大的所有内容,但无论我尝试什么,都说它无效。
目前正在尝试:
catkin build
它表示使用指定的格式字符串表达无效。
有什么想法吗?
答案 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;