(oracle)在

iyfamqjs  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(245)

我的目标是提前30天。数据存储为varchar2类型“20200630”和“20200613”。预期结果分别为“20200531”和“20200514”。
我只是从varchar2'20200630'和'20200613'中减去30,它通过铸造显示结果,但结果不是预期的,例如'20200600','20200583',它们不是日期的形式。
我可以知道如何修改我的代码如下吗

WITH A AS
 (SELECT '20200630' YEARMONTHDAY  FROM DUAL
  UNION ALL
  SELECT '20200613' FROM DUAL)
SELECT YEARMONTHDAY - 30 FROM A;
monwx1rj

monwx1rj1#

使用适当的类型存储数据!也就是说,使用 date 而不是一根绳子。
如果遇到这种格式的数据,请转换为日期:

select to_date(yearmonthday, 'YYYYMMDD') - interval '30' day

我不建议将值转换回字符串。日期应该是日期。

相关问题