【问题标题】:Update the year column in Oracle SQL更新 Oracle SQL 中的年份列
【发布时间】:2022-01-19 06:40:24
【问题描述】:

我有一个格式为 DD-MMM-YY(不是时间戳)的日期,例如 2021 年 12 月 12 日我只想更新年份并将其设为 2019 年 12 月 12 日。

我正在尝试此代码,但出现错误:

ORA-01821:日期格式无法识别 ORA-06512:在“SYS.DBMS_SQL”,第 1721 行

这是我的 SQL:

UPDATE employees 
SET date_hired = TO_DATE('11-Dec-12', 'DD-MMM-YY') 
WHERE cost_center = 86;

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper


    【解决方案1】:

    您需要在格式掩码中使用MON 来获取三字母缩写月份名称:

    UPDATE employees 
    SET date_hired = TO_DATE('11-Dec-12', 'DD-MON-YY') 
    WHERE cost_center = 86;
    

    请注意,您也可以使用 ANSI 日期文字:

    UPDATE employees 
    SET date_hired = date '2012-12-11'
    WHERE cost_center = 86;
    

    【讨论】:

    • 非常感谢。如何在 where 子句中使用日期。我正在使用 UPDATE 员工 SET date_hired = TO_DATE('11-Dec-12', 'DD-MON-YY') WHERE date_hired = TO_DATE('11-Mar-2019','DD-MON-YY');但没有记录得到更新
    • 首先运行等效的选择:SELECT * FROM employees WHERE date_hired = date '2019-03-11' ...您看到任何记录吗?如果没有,那么更新也不会做任何事情。
    • 请注意,对于MONDAY 格式元素,最好明确使用NLS_DATE_LANGUAGE=AMERICAN 作为to_date 的第三个参数。 ANSI 日期文字是最直接的方式
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    相关资源
    最近更新 更多