タイムスタンプ( "1985-02-07T00:00:00.000Z")を日付に変換しようとしましたが、いくつかの異なる試行で成功しませんでした。
以下は私が試したクエリです:
select to_date('1985-02-07T00:00:00.000Z', 'YYYY-MM-DDTHH24:MI:SS.fffZ')
from dual;
あなたの提案は大歓迎です。
to_date
は、入力を秒の小数部をサポートしないDATE
型に変換します。秒の小数部を使用するには、to_timestamp
を使用するときに作成されるTIMESTAMP
タイプを使用する必要があります
ff3
修飾子に関するpstのコメントも正しいです。
書式マスクの「定数」値は二重引用符で囲む必要があります
最終的なステートメントは次のとおりです。
select to_timestamp('1985-02-07T00:00:00.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.ff3"Z"')
from dual;
SQL> select cast(to_timestamp('1985-02-07T00:00:00.000Z', 'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"') as date)
2 from dual
3 /
CAST(TO_TIMESTAMP('
-------------------
07-02-1985 00:00:00
1 row selected.
SELECT to_timestamp_tz('2012-08-08T09:06:14.000-07:00','YYYY-MM-DD"T"HH24:MI:SS.FF3TZR')
FROM dual;
External table DDL,
extract_date char(29) DATE_FORMAT timestamp WITH TIMEZONE mask 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZR'
いくつかの 従うべき規則 :
MM
は月数を、_"MM"
_は二重Mを期待します。FF
またはF
ではなく、FFF
です。末尾の整数で桁数を指定します。 _FF3
_。FF3
_を使用できません。これは動作します:
_SELECT TO_DATE('1985-02-07T00:00:00', 'YYYY-MM-DD"T"HH24:MI:SS')
FROM dual;
_
TO_DATE()
に秒の小数部を無視する方法があるかどうかわからないので、文字列操作関数を使用してそれらを取り除きます。
_SELECT TO_DATE(SUBSTR('1985-02-07T00:00:00.000Z', 1, 19), 'YYYY-MM-DD"T"HH24:MI:SS')
FROM dual;
_
文字列を日時形式で取得したい場合は、これを試してください...
select to_char(TO_DATE('2012-06-26T00:00:00.809Z', 'YYYY-MM-DD"T"HH24:MI:SS".""ZZZZ"'),'yyyy-MM-dd hh:mm:ss PM') as EVENT_DATE from dual
EVENT_DATE
-----------------------
2012-06-26 12:06:00 AM
日付の場合にのみ使用...
select TO_DATE('2012-01-06T00:00:00.809Z', 'YYYY-MM-DD"T"HH24:MI:SS".""ZZZZ"') from dual