如何解决ORA-01843与NLS_DATE_FORMAT问题
本文将详细介绍如何解决ORA-01843与NLS_DATE_FORMAT问题,需要的朋友可以参考下
在Oracle SQL的where子句中传入字符类型参数'19-11月-08',使得可以直接和日期类型比较,或者转换一下同日期类型比较。
如果传入的字符格式和NSL_DATE_FORMAT一致,那么可以不转换直接用,否则会报ORA-01861错误。如果转换得不正确,则可能会报ORA-01843或其他错误。
例如:
Trc代码
SQL>
代码如下:
elect count(*) from dba_objects where created>to_date('2008-12-01');
select count(*) from dba_objects where created>to_date('2008-12-01')
第 1 行出现错误:
ORA-01861: 文字与格式字符串不匹配
Trc代码
SQL>
代码如下:
select count(*) from dba_objects where created>to_date('19-11月-08','mm-dd-
yyyy');
select count(*) from dba_objects where created>to_date('19-11月-08','mm-dd-yyyy'
)
第 1 行出现错误:
ORA-01843: 无效的月份
不能识别的字符串和格式转换不对的字符串测试时会出现这样的错误。
使用to_date转换的格式字符串主要为'DD-MON-RR'/'DD-MON-RRRR'或'YYYY-MM-DD'/'YY-MM-DD'。
如果能识别,正确的结果应是这样。
SQL>
代码如下:
select count(*) from dba_objects where created>'19-11月-08';
COUNT(*)
----------
4199
这个格式和会话的NLS_DATE_FORMAT参数值相关。
代码如下:
select SYS_CONTEXT('USERENV','NLS_DATE_FORMAT') DF, SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE') DL from dual
DF DL
-------------------- --------------------
DD-MON-RR SIMPLIFIED CHINESE
我们在会话级别修改一下这个参数的值。
SQL> alter session set nls_date_format='YYYY-MM-DD';
会话已更改。
SQL>
代码如下:
select count(*) from dba_objects where created>'19-11月-08';
select count(*) from dba_objects where created>'19-11月-08'
第 1 行出现错误:
ORA-01861: 文字与格式字符串不匹配
这样,原来正确的操作就不对了。使用符合NLS_DATE_FORMAT格式的字符串则可以了。
SQL>
代码如下:
select count(*) from dba_objects where created>'2008-12-01';
这个参数和应用的环境也有关系,有的应用会自动修改这个参数值。因此,测试工作最好放到sqlplus中进行。
数据库级别上这个参数的值是固定不变的,如下所示:
Trc代码
SQL>
代码如下:
select * from v$nls_parameters;
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE SIMPLIFIED CHINESE
NLS_TERRITORY CHINA
NLS_CURRENCY ¥
NLS_ISO_CURRENCY CHINA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE SIMPLIFIED CHINESE
NLS_CHARACTERSET ZHS16GBK
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY ¥
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
已选择19行。
NLS_DATE_LANGUAGE是"SIMPLIFIED CHINESE",即简体中文。所以月份值是中文如"11月"。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 프로그램을 사용하여 개발할 때 종종 경고나 오류 메시지가 표시됩니다. 그 중 나타날 수 있는 오류 메시지 중 하나는 다음과 같습니다. PHPWarning:date()expectsparameter2tobelong,stringgiven. 오류 메시지는 다음을 의미합니다. 함수 date()의 두 번째 매개변수는 긴 정수(long)일 것으로 예상되지만 실제로 전달되는 것은 문자열(string)입니다. 그래서 우리는

시스템 타임스탬프를 기반으로 파일과 폴더를 자동으로 만들고 이름을 지정하는 방법을 찾고 있다면 잘 찾아오셨습니다. 이 작업을 수행하는 매우 간단한 방법이 있습니다. 생성된 폴더 또는 파일은 파일 백업 저장, 날짜 기준 파일 정렬 등 다양한 목적으로 사용될 수 있습니다. 이 기사에서는 Windows 11/10에서 자동으로 파일과 폴더를 생성하고 시스템의 타임스탬프에 따라 이름을 지정하는 방법을 매우 간단한 단계로 설명합니다. 사용된 방법은 매우 간단한 배치 스크립트입니다. 이 기사를 재미있게 읽으셨기를 바랍니다. 섹션 1: 시스템의 현재 타임스탬프를 기반으로 폴더를 자동으로 생성하고 이름을 지정하는 방법 1단계: 먼저 폴더를 생성하려는 상위 폴더로 이동한 다음,

1. 소개 java.util 패키지의 Date 클래스는 밀리초 단위의 정확한 특정 시간을 나타냅니다. Date 클래스를 사용하려면 Date 클래스를 소개해야 합니다. 연도를 Date 클래스에 직접 쓰면 올바른 결과가 나오지 않습니다. Java의 날짜는 1900년부터 계산되므로 첫 번째 매개변수에 1900년 이후의 연도 수를 입력하면 원하는 연도를 얻을 수 있습니다. 월은 1을 빼야 하며, 일을 직접 입력할 수 있습니다. 이 방법은 거의 사용되지 않으며, 두 번째 방법이 일반적으로 사용됩니다. yyyy-MM-dd와 같은 특정 형식을 따르는 문자열을 Date 형식의 데이터로 변환하는 방법입니다. 먼저 Date 유형 Date의 객체를 정의합니다.

Date 클래스의 getTime() 메소드를 사용하여 날짜를 밀리초 단위로 표현하는 방법 Java에서 Date 클래스는 날짜와 시간을 나타내는 데 사용되는 클래스입니다. 날짜 객체에 대한 정보를 조작하고 얻는 데 유용한 많은 방법을 제공합니다. 그중 getTime() 메소드는 날짜 객체의 밀리초 표현을 반환할 수 있는 Date 클래스의 중요한 메소드입니다. 다음으로 이 메서드를 사용하여 날짜의 밀리초 표현을 얻는 방법을 자세히 설명하고 해당 코드 예제를 제공합니다. 날짜 클래스 사용

Python에는 우리가 사용할 수 있는 훌륭한 달력 라이브러리와 날짜 라이브러리가 많이 있습니다. 이러한 라이브러리는 날짜 및 달력 관련 작업을 처리하는 데 도움이 될 수 있습니다. 다음으로 몇 가지 일반적인 선택 사항을 소개하고 해당 코드 예제를 제공하겠습니다. Datetime 라이브러리: Datetime은 Python에 내장된 날짜 및 시간 처리 모듈로 날짜, 시간, 시차 및 기타 작업을 처리하는 데 사용할 수 있는 많은 날짜 및 시간 관련 클래스와 메서드를 제공합니다. 샘플 코드: importdatetime#현재 날짜 가져오기

Stringbuild 클래스 String 클래스의 객체 내용은 변경할 수 없기 때문에 연결될 때마다 새로운 String 객체가 생성되므로 시간이 많이 걸리고 메모리 공간이 낭비됩니다. 이때 이 문제를 StringBuild를 통해 해결해야 합니다. StringBuilder는 가변 문자 시퀀스라고도 하며 컨테이너로 간주할 수 있는 문자열 버퍼입니다. 생성 메소드 publicStringBuilder()는 변수입니다: 빈 버퍼 publicStringBuilder(Stringsr)를 생성합니다.

문제가 발생했습니다. springboot를 2.0으로 업그레이드한 후 데이터베이스에서 찾은 날짜를 Date를 사용하여 가져오고 최종적으로 Google에서 yyyy-MM-ddHH:mm:ss 형식으로 정상적으로 표시될 수 있습니다. 크롬. 그러나 IE 브라우저에 표시되는 날짜는 springboot1. ;springboot2.0 이후에 spring이 자동으로 날짜 필드를 (구성 없이) UTC 문자열로 변환하므로 날짜를 타임스탬프로 변환해야 하기 때문에 "깨져 있습니다". 와이

이 기사에서는 PHP에서 GMT/UTC 날짜/시간 형식을 지정하는 방법에 대해 자세히 설명합니다. 편집자는 이것이 매우 실용적이라고 생각하므로 이 기사를 읽고 뭔가를 얻을 수 있기를 바랍니다. PHP에서 GMT/UTC 날짜/시간 형식 지정 방법 소개 PHP에서 GMT/UTC 날짜/시간 형식 지정은 시간대 간 날짜를 올바르게 표시하고 처리하는 데 중요합니다. 이 기사에서는 PHP의 DateTime 클래스를 사용하여 GMT/UTC 날짜/시간 형식을 지정하는 방법과 사용 가능한 다양한 형식 옵션에 대해 설명합니다. DateTime 클래스 DateTime 클래스는 날짜와 시간을 나타냅니다. GMT/UTC와 같은 시간대의 날짜/시간 값을 저장하고 조작할 수 있습니다. 새로운 Da를 생성하려면
