【问题标题】:ORACLE 10g : To_date() Not a valid monthORACLE 10g:To_date() 不是有效月份
【发布时间】:2017-05-12 13:41:44
【问题描述】:

所以我有这个小脚本:

set serveroutput on;
DECLARE
  val DATE;
BEGIN
  val := TO_DATE('27-Jan-2001','DD-Mon-YYYY');
  dbms_output.put_line(val);
END;

掩码与我输入的日期匹配,但它显示

ORA-01843: 月份无效

每次...

谢谢

【问题讨论】:

  • 复制/粘贴你的脚本,对我来说很好
  • 试试val := TO_DATE('27-JAN-2001','DD-MON-YYYY'); - 看看它是否有效。此外,通过发出show parameter nls 检查数据库的 NLS 参数。将结果粘贴到此处。
  • 我的 nls_date_format 是 DD/MM/RR 与 val 相同的错误 := TO_DATE('27-JAN-2001','DD-MON-YYYY')
  • 你从select value from nls_session_parameters where parameter = 'NLS_DATE_LANGUAGE'; 得到什么 - 我认为它既不是“美国”也不是“英语”。

标签: oracle to-date


【解决方案1】:

很可能您当前的会话NLS_DATE_LANGUAGE 设置为一月不缩写为“一月”的值。

试试这个:

DECLARE
  val DATE;
BEGIN
  val := TO_DATE('27-Jan-2001','DD-Mon-YYYY', 'NLS_DATE_LANGUAGE = american');
  dbms_output.put_line(val);
END;

或者执行

ALTER SESSION SET NLS_DATE_LANGUAGE = 'american';

在运行 PL/SQL 块之前。

【讨论】:

  • 感谢它与“NLS_DATE_LANGUAGE = 美国”参数一起使用!
猜你喜欢
  • 2015-03-28
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
  • 2022-01-22
相关资源
最近更新 更多