暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

Oracle 插入中文格式日期报错:ORA-01843

原创 布衣 2022-12-01
3034

一、问题描述

在一次SQL发布,脚本里的日期格式:‘15-11月-22 10.25.53.000000000 上午’,在执行的时候报错:ORA-01843: not a valid month

SQL> select to_timestamp('15-11月-22 10.25.53.000000000 上午','DD-MON-RR HH.MI.SSXFF AM') from dual; select to_timestamp('15-11月-22 10.25.53.000000000 上午','DD-MON-RR HH.MI.SSXFF AM') from dual ORA-01843: not a valid month

二、解决

其实这个问题很经常会遇到,好记性不如烂笔头,于是写下来避免下次再到处找命令了。

  • 查看nls_date_language,当前会话为英文格式
SQL> select * from nls_session_parameters where parameter='NLS_DATE_LANGUAGE'; PARAMETER VALUE ------------------------- ------------------------------------------------------ NLS_DATE_LANGUAGE AMERICAN
  • 修改为中文格式:修改为会话级
SQL> ALTER SESSION SET nls_date_language='SIMPLIFIED CHINESE'; Session altered
  • 再执行正常输出
SQL> select to_timestamp('15-11月-22 10.25.53.000000000 上午','DD-MON-RR HH.MI.SSXFF AM') from dual; TO_TIMESTAMP('15-11月-2210.25.53.000000000上午','DD-MON-RRHH.MI.SSXFFAM') -------------------------------------------------------------------------------- 2022-11-15 10:25:53.000000000

三、来自网上脚本使用个例:

  • 英文:
SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH:MI AM', 'NLS_DATE_LANGUAGE = American') FROM DUAL; TO_CHAR(SYSDATE,'MM ------------------- 11/28/2022 08:06 PM
  • 日文:
SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH:MI AM', 'NLS_DATE_LANGUAGE = Japanese') FROM DUAL; TO_CHAR(SYSDATE,'MM/DD/ ----------------------- 11/28/2022 08:06 午後
  • 中文:(特别注意NLS_DATE_LANGUAGE多两个单引号)
SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH:MI AM', 'NLS_DATE_LANGUAGE = ''SIMPLIFIED CHINESE''') FROM DUAL; TO_CHAR(SYSDATE,'MM/DD/ ----------------------- 11/28/2022 08:05 下午

image.png

文章推荐

欢迎赞赏支持或留言指正

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论