微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Delete 语句中处理 SYSDATE |甲骨文

如何解决在 Delete 语句中处理 SYSDATE |甲骨文

目前,以下代码从 12-APR-2019 开始从我的表中删除回溯数据

DELETE FROM XYZ WHERE check_date < ADD_MONTHS (SYSDATE,-24);

如何修改代码,以便表格存储整个四月的数据,即表格需要从 01-APR-2019 开始的值并删除以前的日期数据(从 31-MAR-2019 开始)

谢谢!

解决方法

如何修改代码,以便表格存储整个四月的数据,即表格需要从 01-APR-2019 开始的值并删除以前的日期数据(从 31-MAR-2019 开始)

delete from xyz where check_date < date '2019-04-01'

是最明显的解决方案。


如果您必须使用 sysdate,也许您想将它截断到月:

DELETE FROM XYZ WHERE check_date < ADD_MONTHS (trunc(SYSDATE,'mm'),-24);

因为

SQL> select add_months(sysdate,-24) your_result,2         add_months(trunc(sysdate,-24) my_result
  3  from dual;

YOUR_RESULT         MY_RESULT
------------------- -------------------
12.04.2019 10:14:30 01.04.2019 00:00:00

SQL>
,
trunc( sysdate,'MM' )

返回当月第一天的午夜。所以

add_months( trunc( sysdate,'MM' ),-24 )

如果今天(2021 年 4 月 12 日)运行,将返回 2019 年 4 月 1 日。所以你只需要

DELETE FROM XYZ 
 WHERE check_date < add_months( trunc( sysdate,-24 )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。