问题描述
目前,以下代码从 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 )