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年历史的记录,您确实可以删除最后一天
。我从你的询问中提取了这一条款,假设这是你想要的。