我的目标是提前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;
1条答案
按热度按时间monwx1rj1#
使用适当的类型存储数据!也就是说,使用
date
而不是一根绳子。如果遇到这种格式的数据,请转换为日期:
我不建议将值转换回字符串。日期应该是日期。