代码之家  ›  专栏  ›  技术社区  ›  bd528

在Oracle中将日期从19XX更新到20XX

  •  0
  • bd528  · 技术社区  · 7 年前

    例如

    ID    FieldA
    123   23/11/1917
    

    会变成

    ID    FieldA
    123   23/11/2017
    
    3 回复  |  直到 7 年前
        1
  •  3
  •   MT0    7 年前

    假设您可能在20世纪后半叶有正确的日期,并且您只需要更新本世纪前半叶(请确认这一点),那么:

    UPDATE table_name
    SET    date_column = ADD_MONTHS( date_column, 12 * 100 )
    WHERE  date_column >= DATE '1900-01-01'
    AND    date_column <  DATE '1950-01-01';
    

    如果您确实想更改20世纪所有年份的日期,那么:

    UPDATE table_name
    SET    date_column = ADD_MONTHS( date_column, 12 * 100 )
    WHERE  date_column >= DATE '1900-01-01'
    AND    date_column < DATE '2000-01-01';
    

    ADD_MONTHS 功能而不是添加 INTERVAL '100' YEAR(3) 因为有20世纪的日期不在21世纪(即1900-02-29)。

        2
  •  0
  •   Timekiller    7 年前

    你可以利用 YY

    如果您将tou DATE函数与YY datetime format元素一起使用, 本年度。

    因此, to_date(to_char(fieldA, 'ddmmyy'), 'ddmmyy') 你需要什么就做什么。不过要小心,如果有年份小于1900或大于2100的日期,它们也会被转换。

        3
  •  0
  •   Gordon Linoff    7 年前

    如果 FieldA date ,则可以执行以下操作:

    select (case when fieldA < date '2000-01-01'
                 then fieldA + interval '100' year(3)
                 else fieldA
            end)