文字列の日付をOracleのdatetimeに変換する

どのように私はこの文字列の日付をOracleのdatetimeに変換できますか?

2011-07-28T23:54:14Z

このコードを使用すると、エラーがスローされます。

TO_DATE('2011-07-28T23:54:14Z',  'YYYY-MM-DD HH24:MI:SS')

これはどうすればできますか?

Error report:
SQL Error: ORA-01861: literal does not match format string
01861. 00000 -  "literal does not match format string"
*Cause:    Literals in the input must be the same length as literals in
           the format string (with the exception of leading whitespace).  If the
           "FX" modifier has been toggled on, the literal must match exactly,
           with no extra whitespace.
*Action:   Correct the format string to match the literal.

更新: -

TO_DATE( '2011-07-28T23:54:14Z'、 'YYYY-MM-DD' T "HH24:MI:SS" Z "')

私は唯一の列に時間ではない日付を参照してください

28-JUL-11
18
@ p.campbellしかし、私の場合。文字列の日付はtとzの形式が異なるため、直接datetime形式に変換する方法はありません。または、それをより明瞭にするために解析する必要があります。
追加された 著者 arsenal,
エラーを投稿してください。
追加された 著者 Jordan Parmer,
あなたの書式にTとZの文字がないか、間違っていますか?あなたが入力文字列を正規化するために正規表現を使用して、2011-07-28 23:54:14を解析してください。
追加された 著者 JMelnik,

3 答え

Try this: TO_DATE('2011-07-28T23:54:14Z', 'YYYY-MM-DD"T"HH24:MI:SS"Z"')

40
追加された
それはうまく働いている..しかし、私は、Oracleのテーブルの日付ではない時間だけを参照してください..私が得た結果は28 - JUL - 11私が欲しかった正確な方法ではない..なぜそれが起こっているのですか?私は日付としてdataTypeを宣言します。
追加された 著者 arsenal,
このsytaxの TO_DATE( '2011-10-25 21:48:01.585'、 'YYYY-MM-DD HH24:MI:SS')
追加された 著者 arsenal,
TO_DATE( '2011-10-25 21:48:01.585'、 'YYYY-MM-DD HH24:MI:SS.FF3')でなければなりません。FFnはn = 1 ..9、あなたが持っている小数点以下の桁数に応じて。
追加された 著者 Krzysztof Jędrzejewski,
@RaihanJamal、これはdateのデフォルトフォーマットです。時間は実際にはそのフィールドにも格納されます。あなたはTO_CHARメソッドを使ってそれを見ることができます。
追加された 著者 Forgotten Semicolon,
それは時間のミリ秒も同様にあるように見えます。このフォーマットがOPのアイテムと同じデータセットにある場合は、データを標準化するための以前のアドバイスに従う必要があります。
追加された 著者 Forgotten Semicolon,

キャストを使用して日付の結果を表示することができます

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

 select to_char(to_date('17-MAR-17 06.04.54','dd-MON-yy hh24:mi:ss'), 'mm/dd/yyyy hh24:mi:ss') from dual;
</div> </div>
0
追加された

やあ、私も同じ問題がありました。私は '2017-02-20 12:15:32'のvarcharを TO_DATE( '2017-02-20 12:15:32'、 'YYYY-MM-DD HH24:MI:SS'の日付に変換しようとしました')、私が受け取ったのは2017-02-20の時でした。

私の解決策は、 TO_TIMESTAMP( '2017-02-20 12:15:32'、 'YYYY-MM-DD HH24:MI:SS')を使用して時間が消えないようにすることでした。

0
追加された
これはおそらく、SQLクライアントの表示形式のためです。 Oracleの DATE にも時間が含まれているため、 TO_DATE は必ずしも時間部分を削除するわけではありません。
追加された 著者 Jon Heller,