私は07-OCT-2017の日付を持っています。私はそれを20171007としてOracleに変換する必要があります。オラクルのDD-MMM-YYYYからYYYYMMDDに変更
Below code doesn't work for me
select To_date(to_char('07-OCT-2017','DD-MMM-YYYY'), 'yyyymmdd') from dual;
私は07-OCT-2017の日付を持っています。私はそれを20171007としてOracleに変換する必要があります。オラクルのDD-MMM-YYYYからYYYYMMDDに変更
Below code doesn't work for me
select To_date(to_char('07-OCT-2017','DD-MMM-YYYY'), 'yyyymmdd') from dual;
多すぎる砂糖。
select to_char(to_date('07-JUL-2017',
'DD-MON-YYYY',
'NLS_DATE_LANGUAGE = American'),
'YYYYMMDD') from dual;
利回り
TO_CHAR(
--------
20170707
詳細を修正。あなたが提示したデータと一致するように質問を編集してください。 まだ、これが役立つことを願っています。
'NLS_DATE_FORMAT'が' DD-MON-YYYY'と一致しないか、 'NLS_DATE_LANGUAGE'または' NLS_TERRITORY'が言語と一致しない場合、 'TO_DATE('07 -JUL-2017 ')'は失敗します。これらの設定はユーザーセッションごとです。ユーザーが変更することができます。デフォルトはユーザーの場所に依存するので、(特に国際機関では)一貫性を持たせるべきではありません。 [TL; DR]は、書式モデルを明示的に指定することなく、テキスト月を使用している場合は、その言語も使用して、TO_DATE()を使用しません。 – MT0
編集ありがとうございます。 –
私は07-OCT-2017の日付を持っています。私はそれを20171007としてOracleに変換する必要があります。
日付(テーブルに格納されています)は、7 bytesで表されます。これらの日付に関連付けられているフォーマットはありません。それらが文字列として書式設定されている場合、これはデータベースにアクセスするために使用しているクライアントプログラムで、独自の書式を日付に適用します(通常はそのプログラムの環境設定で設定できます)。 TO_DATE
を使用して、
SELECT DATE '2017-10-07' FROM DUAL;
か::
だから、あなたは、日付リテラルを使用して、日付を取得することができ
SELECT TO_DATE('07-OCT'2017', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE=English')
FROM DUAL;
ただし、使用しているクライアントプログラムはにそれらの7バイトに変換しますユーザーがデフォルトの日付形式を使用して理解できるもの。この既定の形式は、this answerを使用するSQL Developerで
あなたのデフォルト設定を変更したり、あなたがあなたの日付を変換する必要があります他のユーザーのための形式で表示する必要がしたくない場合は(内部的に7バイトなしTO_CHAR
を使用してフォーマットされた文字列の形式):
SELECT TO_CHAR(DATE '2017-10-07', 'YYYYMMDD') FROM DUAL;
または
SELECT TO_CHAR(
TO_DATE('07-OCT'2017', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE=English'),
'YYYYMMDD'
)
FROM DUAL;
あなたは、日付または文字列をしたいですか?今は日付に変換しています。データの保存方法は変わりません。 –