2016-03-22 13 views
0

varchar2の日付が 'ddmmyyyy'の形式になっていて、 'yyyy-mm-ddThh: mm:ssZ 'であり、最終変数は日付の時刻形式です。例えばOracle:varchar2をdatetime形式に変換する 'yyyy-mm-ddThh:mm:ssZ'

、私は次のVARCHAR2変数variable1を持っている:

variable1 := '11092016'

と私は最終的な結果がなりたい:variable2がVARCHAR2ではなく、他の任意の日付時刻フォーマットを有する

variable2:='2016-09-11T00:00:00Z'

誰でも助けてくれますか?

+1

"date2はvarchar2ではありませんが、他の日付の時刻形式は何ですか"という意味は何ですか?日付を表す特定の形式の文字列を持つことができます。その場合、 'varchar2'を使うか、' date'か 'timestamp'を持たせることができません。 –

+0

注意 'Z'はタイムゾーン' UTC'を意味します - これはケースか変換を必要としますか? –

+0

@WernfriedDomscheitはいそれはタイムゾーンUTCです...私は 'variable1'としてvarchar2を持っているそれに変換したい – porthfind

答えて

0

日付には書式はありません。形式は、文字列に変換するか、クライアントソフトウェアによって適用されます。あなただけの日付としてそれをしたい場合は、TO_DATE(value, 'DDMMYYYY')を使用して(と日付オブジェクトが00:00:00に設定された時間のコンポーネントを持つことになります)が、あなたはISO8601フォーマットされた文字列としてそれをしたい場合:

Oracleのセットアップ

CREATE TABLE dates (value) AS 
SELECT '20032016' FROM DUAL; 

クエリ

SELECT TO_CHAR(
     TO_DATE(value, 'DDMMYYYY'), 
     'YYYY-MM-DD"T"HH24:MI:SS"Z"' 
     ) AS ISODate 
FROM dates; 

出力

ISODATE 
-------------------- 
2016-03-20T00:00:00Z  
+0

ISODATEはvarcharになりますが、日付形式はありません。 – porthfind

+0

私の編集日にはフォーマットがありません(作成方法によっては、内部的に7バイトまたは8バイトで表されます)。日付の形式を指定する場合は、文字列(Oracleまたはクエリーの実行に使用するクライアント内)に変換する必要があります。 – MT0

関連する問題