Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 必须将4到12个月的记录从主_表复制到存档表_Sql_Oracle_Where Clause - Fatal编程技术网

Sql 必须将4到12个月的记录从主_表复制到存档表

Sql 必须将4到12个月的记录从主_表复制到存档表,sql,oracle,where-clause,Sql,Oracle,Where Clause,我正在使用游标 CURSOR c_process_state is SELECT service, tr_source, tr_id, action, tstamp FROM process_state WHERE tstamp BETWEEN ADD_MONTHS(trunc(SYSDATE,'MONTH'), -4) AND LAST_DAY(TRUNC(SYSDATE, 'MONTH') - 12); //follo

我正在使用游标

  CURSOR c_process_state is
      SELECT service, tr_source, tr_id, action, tstamp 
        FROM process_state 
       WHERE tstamp BETWEEN ADD_MONTHS(trunc(SYSDATE,'MONTH'), -4) 
         AND LAST_DAY(TRUNC(SYSDATE, 'MONTH') - 12);

 //followed by insert statements into the table process_state_archival
我看不到4到12个月之间的记录。它不能正常工作

我想根据tstamp字段获取4到12个月之间的记录

而且,一旦复制成功,我必须在4到12个月内删除记录


有谁能告诉我如何添加条件吗?谢谢。

如果您确实想选择过去4个月到过去12个月的记录:

CURSOR c_process_state is
   SELECT service, tr_source, tr_id, action, tstamp 
     FROM process_state 
    WHERE tstamp BETWEEN ADD_MONTHS(LAST_DAY(TRUNC(SYSDATE, 'MONTH')), - 12)
      AND ADD_MONTHS(trunc(SYSDATE,'MONTH'), -4);

如果要选择日期范围
01-APR和31-DEC
之间的数据,请尝试以下查询

CURSOR c_process_state is
     SELECT service, tr_source, tr_id, action, tstamp 
     FROM   process_state 
     WHERE  tstamp
     BETWEEN ADD_MONTHS(trunc(SYSDATE, 'YEAR'), 3) AND ADD_MONTHS(TRUNC(SYSDATE ,'YEAR'), 12) -1

你能解释一下最后一天(TRUNC(SYSDATE,'MONTH'),-4)是什么吗?我们为什么要先给ADD_MONTH(---)???是否需要像第一天这样的事情来获得正确的记录???
ADD_MONTHS(trunc(SYSDATE,'MONTH'),-4)
:这允许选择4个月的记录。
ADD_MONTHS(trunc(SYSDATE,'MONTH'),-12)
:这允许选择一年(12个月)的记录,从本月最后一天开始,汉克:)明白了。。我的疑问是为什么最后一天(--)呢??为什么不添加月份(-)?如果您想从今天开始获取1年历史的记录,您确实可以删除
最后一天
。我从你的询问中提取了这一条款,假设这是你想要的。