2

次のようなタイムスタンプが Oracle データベースのテーブルに保存されています。

01/03/12 16:13:33,000000000

Unixのエポックからの秒数に変換してクエリに返したい。それを行う最も簡単な方法は何ですか?

編集:ああ、タイムスタンプの精度が必要で、精度が低いため、ここでは日付型に依存できません。

4

1 に答える 1

1

多分

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 であると想定しています。

共有してお楽しみください。

于 2012-05-11T17:38:19.677 に答える