如何解决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衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP プログラムを使用して開発する場合、警告メッセージやエラー メッセージが表示されることがよくあります。その中で、表示される可能性のあるエラー メッセージの 1 つは、PHPWarning:date()expectsparameter2tobelong,stringgiven です。エラー メッセージの意味は次のとおりです。関数 date() の 2 番目のパラメーターは長整数 (long) であることが予期されていますが、実際に渡されるのは文字列 (string) です。それで、私たちは

システムのタイムスタンプに基づいてファイルやフォルダーを自動的に作成し、名前を付ける方法を探している場合は、ここが最適な場所です。このタスクを達成するための非常に簡単な方法があります。作成されたフォルダーまたはファイルは、ファイルのバックアップの保存、日付に基づいたファイルの並べ替えなど、さまざまな目的に使用できます。この記事では、Windows 11/10 でファイルとフォルダーを自動的に作成し、システムのタイムスタンプに基づいて名前を付ける方法を、非常に簡単な手順で説明します。使用される方法はバッチ スクリプトであり、非常に簡単です。この記事を楽しんで読んでいただければ幸いです。セクション 1: システムの現在のタイムスタンプに基づいてフォルダーを自動的に作成し、名前を付ける方法 ステップ 1: まず、フォルダーを作成する親フォルダーに移動します。

Date クラスの getTime() メソッドを使用して日付のミリ秒表現を取得する方法 Java では、Date クラスは日付と時刻を表すために使用されるクラスです。これは、日付オブジェクトに関する情報を操作および取得するための便利なメソッドを多数提供します。その中でも getTime() メソッドは Date クラスの重要なメソッドであり、日付オブジェクトのミリ秒表現を返すことができます。次に、このメソッドを使用して日付のミリ秒表現を取得する方法を詳しく説明し、対応するコード例を示します。 Date クラスの使用

1. はじめに java.util パッケージの Date クラスは、ミリ秒単位の正確な特定の時刻を表します。 Date クラスを使用したい場合は、Date クラスを導入する必要があります。 Date クラスに年を直接書き込んでも、正しい結果は得られません。 Java の日付は 1900 年から計算されるため、最初のパラメータに 1900 年からの年数を入力すれば、必要な年が得られます。月は 1 を引く必要がありますが、日は直接挿入できます。この方法はほとんど使用されず、2 番目の方法が一般的に使用されます。 yyyy-MM-ddなどの特定の形式に従った文字列をDate型データに変換する方法です。まず、Date型Dateのオブジェクトを定義します。

Python には、使用できる優れたカレンダー ライブラリと日付ライブラリが多数あり、これらのライブラリは日付とカレンダー関連の操作を処理するのに役立ちます。次に、いくつかの一般的な選択肢を紹介し、対応するコード例を示します。 Datetime ライブラリ: datetime は、Python の組み込みの日付と時刻処理モジュールであり、日付、時刻、時差、その他の操作の処理に使用できる、日付と時刻に関連する多くのクラスとメソッドを提供します。サンプルコード: importdatetime#現在の日付を取得する

問題が発生しました。springboot を 2.0 にアップグレードした後、データベースから見つかった日付が Date を使用して受信され、最終的にフロントエンドに直接返されました。Google では yyyy-MM-ddHH:mm:ss 形式で正常に表示されました。クロム。ただし、IE ブラウザに表示される日付は「文字化け」します。これは、springboot1.x バージョンがデフォルトで Date フィールドにタイムスタンプを返し、Google と IE がタイムスタンプを yyyy-MM-ddHH:mm:ss ;After に自動的に変換するためです。 springboot2.0 では、spring は Date フィールドを (構成なしで) UTC 文字列に自動的に変換するため、日付をタイムスタンプまたは y に変換する必要があります。

Stringbuild クラス String クラスのオブジェクト内容は変更できないため、結合するたびに新しい String オブジェクトが構築され、時間がかかり、メモリ領域を無駄に消費します。このとき、StringBuild を通じてこの問題を解決する必要があります。 Javaが提供するクラスです。StringBuilderは、変数文字列とも呼ばれます。Stringと同様の文字列バッファであり、コンテナとみなすことができます。コンテナには多くの文字列を保持できます。変数とは、StringBuilderオブジェクトの内容を意味します構築メソッド publicStringBuilder(): 空のバッファを作成します publicStringBuilder(Stringsr

この記事では、PHP で GMT/UTC の日付/時刻をフォーマットする方法について詳しく説明します。編集者が非常に実用的であると考えたので、参考として共有します。この記事を読んで何かを得ることができれば幸いです。 PHP での GMT/UTC 日付/時刻の書式設定の概要 PHP では、クロスタイムゾーンの日付を正しく表示および処理するために、GMT/UTC 日付/時刻の書式設定が重要です。この記事では、PHP の DateTime クラスを使用して GMT/UTC 日付/時刻を書式設定する方法と、利用可能なさまざまな書式設定オプションについて説明します。 DateTime クラス DateTime クラスは日付と時刻を表します。 GMT/UTC などのタイムゾーンで日付/時刻値を保存および操作できます。新しい Da を作成するには
