web-dev-qa-db-ja.com

ミリ秒の日付文字列にOracle to_date関数を使用する

Oracle DBにいくつかの挿入を実行する必要があります。次の形式の日付があります

'23.12.2011 13:01:001'

ドキュメントに従って、次のように挿入to_dateを作成しました。

to_date('23.12.2011 13:01:01', 'DD.MM.YYYY HH24:MI:SS')

正常に動作します。今、私はフォーマットでミリ秒の日付を持っています

'23.12.2011 13:01:001'

私は次を試しました:

to_date('23.12.2011 13:01:001', 'DD.MM.YYYY HH24:MI:SSFF3')

これは誤りです(エラー01821. 00000-「日付形式が認識されません」を配信します)。

ミリ秒でこの形式に使用する「文字列」はどれですか?

前もって感謝します!

45
Luixv

Oracle DATEは、1秒よりも高い精度で時刻を格納しません。 DATE列にミリ秒精度のデータを格納することはできません。

あなたの2つのオプションは、ミリ秒の文字列をDATEに変換する前に切り捨てることです。

to_date( substr('23.12.2011 13:01:001', 1, 19), 'DD.MM.YYYY HH24:MI:SS' )

または、文字列をミリ秒の精度をサポートするTIMESTAMPに変換します

to_timestamp( '23.12.2011 13:01:001', 'DD.MM.YYYY HH24:MI:SSFF3' )
75
Justin Cave

TO_DATEは、ミリ秒をサポートしないDATEデータ型への変換をサポートします。 Oracleでミリ秒のサポートが必要な場合は、TIMESTAMPデータ型とTO_TIMESTAMP関数を調べる必要があります。

それが役に立てば幸いです。

9
Mark J. Bobak

次の形式を試すことができますSS.FFミリ秒:

yyyy-mm-dd HH:MI:SS.FF

詳細については:
https://docs.Oracle.com/cd/B19306_01/server.102/b14200/functions193.htm

4
dipti

3桁のミリ秒の場合:

TO_CHAR(LN_AUTOD_UWRG_DTTM,'MM/DD/YYYY HH24:MI:SS.FF3')

6桁のミリ秒の場合:

TO_CHAR(LN_AUTOD_UWRG_DTTM,'MM/DD/YYYY HH24:MI:SS.FF'),
0
SANKAR