2017-12-19 10 views
-2

私は理解したいoracleデータの問題があります。oracleの日付を変換するためのTO_CHARの理解

私が実行したコメントとコメントは出力です。

SELECT SYSDATE FROM DUAL; --19-DEC-17 
SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') FROM DUAL; -- 19/12/2017 
SELECT TO_CHAR(SYSDATE,'MM/DD/YYYY') FROM DUAL; -- 12/19/2017 

私の質問は、to_charメソッドが最初のパラメータとして期待しているのはどのような日付形式ですか?私たちが渡す必要のあるデフォルトの日付形式はありますか?

私はこれも同様にエラーをスローする以下のクエリを試しました。 to_charがどのように機能しているかを専門家が説明できれば、それは素晴らしいことでしょう。

SELECT TO_CHAR('19/12/2017','DD/MM/YYYY') FROM DUAL; 

ORA-01722: invalid number 
01722. 00000 - "invalid number" 
*Cause: The specified number was invalid. 
*Action: Specify a valid number. 
+2

フォーマットは?それはすでに日付であることを期待しているので、フォーマットは数字のフォーマットとは無関係です。 –

+1

to_charは、日付を2番目のパラメータとして渡す任意の形式に変換します。 'DD/MM/YYYY' - 同じ形式で出力19/12/2017 –

+0

@Nikhil私が理解しているのは、最初のパラメータは日付オブジェクトでなければならないということですか?私は正しい?このTO_CHAR('19/12/2017 '、' DD/MM/YYYY ')を試してみると、失敗します。 –

答えて

0

ご使用のクエリでは、文字列値が使用されています。代わりに、TO_CHAR()を使用して表示する場合は、datetime型の文字列を使用する必要があります。あなたの場合、'19/12/2017 'は純粋な文字列です。 TO_DATE()関数を使用して日付型に変換してください。 Oracle Docs for TO_CHAR (datetime)から引用

SELECT TO_CHAR('19/12/2017','DD/MM/YYYY') FROM DUAL; // error 

TO_CHAR(日時)は、ローカルタイムゾーン データ型にWITH日時またはDATEの間隔値、 TIMESTAMP、TIME ZONE WITH TIMESTAMP、またはTIMESTAMPに変換します で指定された形式のVARCHAR2データ型の値。日付形式はfmtです。 fmtを省略すると、日付は次のように VARCHAR2の値に変換されます。

DATE値は、デフォルトの日付形式の値に変換されます。

TIMESTAMPおよびTIMESTAMP WITH LOCAL TIME ZONE値は、デフォルトのタイムスタンプ形式の 値に変換されます。

TIMESTAMP WITH TIME ZONE値は、タイムゾーン形式のデフォルトの タイムスタンプの値に変換されます。

同様に、関数TO_CHAR()も数値を受け入れます。

TO_CHAR(数)は 任意数の書式fmtを使用して、VARCHAR2データ型の値nに変換する:

Oracle Docs for TO_CHAR (number)から引用。値nは、タイプNUMBER、 、BINARY_FLOAT、またはBINARY_DOUBLEのいずれかです。 fmtを省略すると、nは に変換され、VARCHAR2の値はその有効な数字である を保持するのに十分なだけ長くなります。

0

この

SELECT TO_CHAR('19/12/2017','DD/MM/YYYY') FROM DUAL; 

は意味がありません。 '19/12/2017 'は文字列なので、format maskはもちろんのこと、TO_CHARを使用したように、別の文字列に変換することはありません。

文字列'19/12/2017 'を' dd/mm/yyyy '形式のマスクを使用して日付値に変換すると言うこの文でTO_DATEを使用しても問題ありません。

これは、メッセージの最初の部分で行ったことです。 SYSDATEはDATEデータ型の値を返す関数であるため、TO_CHARを適用して目的の形式で表示します。フォーマットモデルをご覧ください:https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm

関連する問題