我正在尝试将当前日期 - 2个月转换为格式yyyymmdd并从中减去1900000。
Oracle对我来说很容易
SELECT TO_CHAR(ADD_MONTHS(SYSDATE,-2),'YYYYMMDD') - 19000000 FROM DUAL
有人建议我使用 AS400 。
提前致谢。
答案 0 :(得分:2)
应该这样做:
select char(((year(d)-1900) * 100 + month(d)) * 100 + day(d))
from (select (curdate() - 2 months) as d from sysibm/sysdummy1) s
或者如果你喜欢在没有嵌套选择的情况下做同样的事情:
select char(((year(curdate() - 2 months) - 1900) * 100
+ month(curdate() - 2 months)) * 100
+ day(curdate() - 2 months))
from sysibm/sysdummy1
干杯
答案 1 :(得分:1)
最简单的可能是:
SELECT DEC(REPLACE(CHAR(CURDATE() - 2 MONTHS,ISO),'-',''))-19000000 FROM SYSIBM/SYSDUMMY1
有些想法可能会更好地挖掘出一些东西。但无论如何都不会变得更简单。
答案 2 :(得分:0)
选择 DEC(SUBSTR(CHAR(日期(现在()) - 2个月),ISO),1,4)|| SUBSTR(CHAR(日期(现在()) - 2个月),ISO),6,2)|| SUBSTR(CHAR(日期(现在()) - 2个月),ISO),9,2),8,0) - 19000000 来自双重
答案 3 :(得分:0)
这是一个迟到的答案,但应该这样做:)
select char((year(curdate() - 2 months) * 100
+ month(curdate() - 2 months)) * 100
+ day(curdate() - 2 months))
from sysibm/sysdummy1
这与karol.mlot的答案几乎相同,但是,因为您要求YYYYMMDD
,您将获得正确的格式答案 4 :(得分:-1)
EVAL numericField = %dec(%date(alphaDate:*MDY/):*MDY)
char字段后面的parm必须是char字段的格式(我使用* MDY和“/”作为示例)。
表达式末尾的parm必须是数字字段的格式。 因此,此示例将11/22/2008转换为11222008。
如果您希望2008-11-22转换为20081122,请同时制作两个参数* ISO。