クレジット カード レコードを含むデータベース テーブルがあります。フィールドの 1 つは日付フィールドです。年が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 に答える