填坑ORA-01846 周中的日无效

Posted loliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了填坑ORA-01846 周中的日无效相关的知识,希望对你有一定的参考价值。

在数据库迁移过程有如下时间格式:

Sun Jul 22 18:14:38 CST 2018

格式化为DATE:

TO_DATE(‘Sun Jul 22 18:14:38 CST 2018‘,‘Dy MON DD HH24:MI:SS "CST" YYYY‘)

导入ORACLE11g中报错信息为

ORA-01846 周中的日无效

解决过程:
在SQL无法修改的情况下,解决数据库的时间格式问题
一、确认数据库语言环境
使用SQL语句查看数据库存放数据的语言环境参数:

SELECT * FROM V$NLS_PARAMETERS;

技术分享图片
确认目前数据库时间格式为中文简体,SQL语句中日期格式为英文。
二、根据时间修改NLS_DATE_LANGUAGE参数

  • 方法一
    在格式化时为日期指定语言参数:
TO_DATE(‘Sun Jul 22 18:14:38 CST 2018‘,‘Dy Mon DD HH24:MI:SS YYYY‘,‘NLS_DATE_LANGUAGE = American‘)

技术分享图片

  • 方法二
    修改当前会话参数
alter session set nls_date_language=‘american‘;

修改成功后:
技术分享图片

操作日期格式:
技术分享图片

当然,修改nls_date_language参数的方法不止这两种,只是在此场景下适合用这两种方法解决。










以上是关于填坑ORA-01846 周中的日无效的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode系列1185. 一周中的第几天

LeetCode - 1185 - 一周中的第几天 - java - 细喔

如何在 DatePicker 中使一周中的某些天不可用

Spring Rest 文档。片段生成时 UTF-8 中间字节无效 [重复]

如何在 oracle 中计算工作日,不包括一周中的任何特定日期?

Mysql列表日期范围之间的日期,但仅限于一周中的特定日期