我有一个包含信用卡记录的数据库表。其中一个字段是日期字段。如果年份小于 2010,我想通过将日期的年份部分更改为 2011 来更新此字段。据我发现,PLSQL 具有时间和月份的功能,但与年份无关(据我所知)。
问问题
6248 次
3 回答
5
这显示了如何
with cc as(
select to_date('12-jan-1999') as cdate from dual union all
select to_date('12-jan-1921') as cdate from dual union all
select to_date('12-jan-1900') as cdate from dual union all
select to_date('12-jan-2000') as cdate from dual union all
select to_date('12-jan-2010') as cdate from dual
)
select to_date( to_char(cdate,'DD-MON') ||'-2011','DD-MON-YYYY')
from cc
where cdate < to_date('01-JAN-2010','DD-MON-YYYY')
/
于 2010-07-02T07:07:46.717 回答
3
1 年 = 12 个月,因此减去 12 个月:
select add_months(sysdate,-12) from dual
于 2010-07-02T15:57:15.510 回答
1
以下是如何使用 add_months 处理闰年的方法。
with cc as(
select to_date('12-jan-1999','dd-mon-yyyy') as cdate from dual union all
select to_date('12-jan-1921','dd-mon-yyyy') as cdate from dual union all
select to_date('29-feb-1904','dd-mon-yyyy') as cdate from dual union all
select to_date('12-jan-2000','dd-mon-yyyy') as cdate from dual union all
select to_date('12-jan-2010','dd-mon-yyyy') as cdate from dual
)
select add_months(cdate,(2011 - extract( year from cdate)) * 12)
from cc
where cdate < to_date('01-JAN-2010','DD-MON-YYYY');
于 2010-07-02T19:01:25.630 回答