web-dev-qa-db-ja.com

varchar2からタイムスタンプへの変換

Oracleテーブルの列には、値_varchar2_を含む_'2017-02-14T18:04:34.988+00:00'_列があります。タイムスタンプに変換する必要があります。 TO_TIMESTAMP()を使用して変換していますが、提供する必要がある日付マスクを見つけることができません。私は試しました

_sql> select to_timestamp('2017-02-14T18:04:34.988+00:00','YYYY-MM-DD HH24:MI:SS.FF') from dual ;
_

しかし、それは機能しません。

2番目の引数として指定する必要がある日時マスクを提案してください。

2
Deepak K M

ISO 8601 によると、Tは時間指定子です。日付書式マスクでは定数"T"を使用する必要があります。

そして、タイムスタンプにはタイムゾーンが含まれているため、これを実現するにはTO_TIMESTAMP_TZ関数を使用する必要があります。

SQL> select to_timestamp_tz('2017-02-14T18:04:34.988+00:00',' YYYY-MM-DD"T"HH24:MI:SS.FF TZH:TZM') from dual;

TO_TIMESTAMP_TZ('2017-02-14T18:04:34.988+00:00','YYYY-MM-DD"T"HH24:MI:SS.FF
---------------------------------------------------------------------------
14-FEB-17 06.04.34.988000000 PM +00:00

ドキュメント:TO_TIMESTAMP_TZ

2
JSapkota