【问题标题】:(Oracle)Getting 30 days before(甲骨文)提前 30 天获取
【发布时间】:2020-06-13 13:59:39
【问题描述】:

我的目标是提前 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;

【问题讨论】:

    标签: sql oracle date casting


    【解决方案1】:

    使用适当的类型存储您的数据!也就是说,使用date 而不是字符串。

    如果您遇到这种格式的数据,请转换为日期:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多