【问题标题】:Delete from Oracle table rows older than 1 month从 Oracle 表中删除超过 1 个月的行
【发布时间】:2017-04-24 13:48:52
【问题描述】:

在 Oracle 中,我有一个表,其 DB_FLD_4 定义为 VARCHAR2(20 BYTE),但实际上包含如下所示的 DATE 信息:

select DB_FLD_4 from DM_SUPDES_DISTRIB order by DB_FLD_4 desc;

4/9/2017
4/7/2017
4/6/2017

m/d/yyyy 格式。

我想创建一个 SP,它会从表中删除超过 1 个月的每一天的行。

我的系统日期如下所示:

select sysdate from dual;

SYSDATE
24-APR-17 04.41:00

请帮助处理格式以使这成为可能。

非常感谢!!!

【问题讨论】:

  • 您是否尝试过将这个定义错误的 VARCHAR2 列视为日期。展示您已经尝试过的内容是一种很好的做法。

标签: oracle sysdate


【解决方案1】:

在您的专栏中使用to_date(),然后将 sysdate 截断为“四舍五入”到当天

delete
from MyTable
where to_date(MyColumn, 'MM/DD/YYYY') < add_months(trunc(sysdate), -1)

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多