• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

cynchanpin

  • 博客园
  • 联系
  • 订阅
  • 管理

View Post

ORA-01843:无效的月份

        Oracle数据库默认情况下。会以DD-MON-YY的形式显示日期。当中DD是天数,MON是月份的前三个字母(大写)。而YY是年份的最后两位。数据库实际上会为年份存储4位数字,可是默认情况下仅仅会显示最后两位。


一个简单的语句:

       SELECT TO_DATE('21-MAY-2014') FROM dual;

引发ORA-01843:无效的月份。


PL/SQL Developer错误:


命令行:


       分析:通过命令行中日期的显示发现。日期的显示是以中文格式显示(Oracle知道我们client的环境为中文环境,所以转换为中文格式显示),而我们SQL语句所针对的环境是英文环境。到这里错误已经非常明显啦。


解决之道(统一日期的语言):

统一中文: SELECT TO_DATE('21-5月-2014') FROM dual;

统一英文:

1、改动client会话日期的语言: ALTER SESSION SET nls_date_language='american';

2、成功运行: SELECT TO_DATE('21-MAY-2014') FROM dual;






posted on 2017-06-16 17:23  cynchanpin  阅读(34491)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3