次のようなタイムスタンプが Oracle データベースのテーブルに保存されています。
01/03/12 16:13:33,000000000
Unixのエポックからの秒数に変換してクエリに返したい。それを行う最も簡単な方法は何ですか?
編集:ああ、タイムスタンプの精度が必要で、精度が低いため、ここでは日付型に依存できません。
多分
WITH I AS (SELECT (TO_TIMESTAMP_TZ('01/03/12 16:13:33,000000000' || SESSIONTIMEZONE,
'DD/MM/RR HH24:MI:SS,FF9TZH:TZM') -
TO_TIMESTAMP_TZ('01/01/1970 00:00:00 GMT',
'DD/MM/YYYY HH24:MI:SS TZR')) AS UNIX_INTERVAL
FROM DUAL)
SELECT (EXTRACT(DAY FROM UNIX_INTERVAL) * 86400) +
(EXTRACT(HOUR FROM UNIX_INTERVAL) * 3600) +
(EXTRACT(MINUTE FROM UNIX_INTERVAL) * 60) +
(EXTRACT(SECOND FROM UNIX_INTERVAL))
FROM I
始めましょう。これは、エポック日付が 1970 年 1 月 1 日 00:00:00Z であると想定しています。
共有してお楽しみください。