5

タイムスタンプ変数があるとしましょう:

select timestamp '2011-02-24 08:30:42 +06:00' from dual;

それを次のように「切り捨てる」方法はありますか

'2011-02-24 08:00:00 +06:00'

(分と秒をカットしましたが、タイムゾーンは残しました)

ターゲットのオラクルのバージョンは 11g r2 です

4

4 に答える 4

4
SQL> select to_timestamp_tz(to_char(timestamp '2011-02-24 08:30:42 +06:00', 'YYYY-MM-DD HH24 TZH:TZM'), 'YYYY-MM-DD HH24 TZH:TZM') from dual;

TO_TIMESTAMP_TZ(TO_CHAR(TIMESTAMP'2011-02-2408:30:42+06:00','YYYY-MM-DDTZH:
---------------------------------------------------------------------------
24.02.2011 8:00:00,000000000 +06:00
于 2011-02-24T00:44:41.740 に答える
1

私はそれを使用して動作させました:

SELECT TO_TIMESTAMP_TZ(TO_CHAR(timestamp '2011-02-24 08:30:42 +06:00', 'YYYY-MM-DD HH24') || ':00:00 '|| TO_CHAR(timestamp '2011-02-24 08:30:42 +06:00', 'TZH:TZM'), 'YYYY-MM-DD HH24:MI:SS TZH:TZM')
  FROM DUAL

TRUNCはタイムスタンプ 9.2.0.3+をサポートしていますが、10g Express Edition での私のテストでは、これが

SELECT TRUNC(timestamp '2011-02-24 08:30:42 +06:00', 'HH')
  FROM DUAL

...時間と午前/午後を完全に台無しにしました。リテラルの場合、または TO_TIMESTAMP_TZ 内で提供された場合は問題ありませんでした。10gR2 の TRUNC(date) のドキュメントには、「date に別の日時データ型を指定した場合でも、返される値は常にデータ型 DATE です。」と記載されています。

于 2011-02-24T01:10:19.847 に答える
-1

試すselect cast(timestamp as date) from dual

于 2011-09-29T04:03:20.157 に答える