根据间隔使用sysdate更新日期列

9o685dep  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(307)

我需要创建一个plsql脚本,该脚本在执行时必须根据填充间隔(每小时、每天、每周、每月)使用sysdate更新填充日期列。
例如,如果是每周填充间隔,则必须按如下方式更新填充日期列中的现有日期:
记录sid(现有日期)填充日期
2020年1月20日系统日期(2020年8月3日)
2 2020年1月20日系统日期(2020年8月3日)
3 2020年1月19日sysdate-1(2020年8月2日)
4 2020年1月19日sysdate-1(2020年8月2日)
5 2020年1月18日sysdate-2(2020年8月1日)
6 2020年1月18日sysdate-2(2020年8月1日)
7 2020年1月17日sysdate-3(2020年7月31日)
8 2020年1月17日sysdate-3(2020年7月31日)
9 2020年1月17日sysdate-3(2020年7月31日)
10 2020年1月16日sysdate-4(2020年7月30日)
11 2020年1月16日(日期4)2020年7月30日)
2020年1月15日系统日期5(2020年7月29日)
13-15-jan-2020系统日期-5(29-jul-2020)
2020年1月14日sysdate-6(2020年7月28日)
并且该列存在于100个不同结构的表中,仅population\u date列就必须根据间隔使用当前日期进行更新。

vc9ivgsu

vc9ivgsu1#

如果我理解正确的话,您希望最近的日期是在今天或之前的一周的同一天。这种逻辑是:

population_date + floor( (sysdate - population_date) / 7) * 7

你可以把这个放进 update 作为:

update t
    set population_date = population_date + floor( (sysdate - population_date) / 7) * 7;

我建议你做个调查 select 首先验证结果。

相关问题