を表示しません、私は時間と日付から間隔を引く:Oracleのフォーマットを指定してTO_DATEは、私は単純な計算を持っている時間
select TO_DATE('2016-12-05 23:04:59', 'YYYY-MM-DD HH24:MI:SS') - to_dsinterval('00 0:05:00') from dual;
それは正常に動作し、結果:2016年12月5日午前22時59分59秒
タイムゾーンでは正しく動作しないため、次の方法ではタイムゾーンの問題を解決します。もう一度to_date()で式をラップするだけです。
select TO_DATE(
TO_DATE('2016-12-05 23:04:59', 'YYYY-MM-DD HH24:MI:SS') - to_dsinterval('00 0:05:00')) from dual;
今は時間がゼロに変わります。結果は次のようになります。2016年12月5日夜10時59分59秒実際:2016年12月5日午前0時00分〇〇秒
私はこのように、外TO_DATEにフォーマットを追加する場合:
select to_date(TO_DATE('2016-12-05 23:04:59', 'YYYY-MM-DD HH24:MI:SS') - to_dsinterval('00 0:05:00'), 'YYYY-MM-DD HH24:MI:SS') from dual;
結果は非常に奇妙になる:私が間違ってやっている何0005-12-16午後12時00分○○秒 ?
結果は、すでに日付です。別の 'to_date()'は必要なく、これはタイムゾーンの問題を解決しません。タイムゾーンで何らかの操作をしたい場合は、 'timestamp at time zone'を使用してください。 – Kacper