web-dev-qa-db-ja.com

Oracleの日付から時間を減算して、日にも影響を与える方法

私もOracleから日付を減算しようとしているので、その日も影響します。たとえば、タイムスタンプが2015年6月1日00時間で、2時間減算すると、2014年5月31日22時間に移動できるようになります。

私は試した

to_char(sysdate-(2/11), 'MM-DD-YYYY HH24')

ただし、時間を引くだけです。その日自体には影響しません。

17
hi4ppl

他の人は、2/11の(誤った)使用についてコメントして、望ましい間隔を指定しています。

しかし、個人的には、ANSI intervalリテラルを使用して読み取りクエリをはるかに簡単にするようなものを書くことを好みます。

sysdate - interval '2' hour

また、ポータブルであるという利点もあり、多くのDBMSがこれをサポートしています。さらに、式が何時間を意味するのかを知るために計算機を起動する必要はありません-暗算はかなり苦手です;)

42

これを試して:

SELECT to_char(sysdate - (2 / 24), 'MM-DD-YYYY HH24') FROM DUAL

新しい日付インスタンスを使用してテストするには:

SELECT to_char(TO_DATE('11/06/2015 00:00','dd/mm/yyyy HH24:MI') - (2 / 24), 'MM-DD-YYYY HH24:MI') FROM DUAL

出力は、06-10-2015 22:00(前日)です。

3
m3nation

sysdate-(2/11)

[〜#〜] date [〜#〜]からhoursを引くには、hoursindays。 1日は24 hours、変換するために2 hoursを数日に分割するには、24

ここで、日付から2時間を差し引くには、次のようにします。

DATE_value - 2/24

例えば、

SQL> SELECT TO_CHAR(
  2                 TO_DATE('01/Jun/2015 00:00:00', 'DD/Mon/YYYY HH24:MI:SS') - 2/24,
  3         'DD/Mon/YYYY HH24:MI:SS') dt
  4  FROM DUAL;

DT
--------------------
31/May/2015 22:00:00

SQL>
3
Lalit Kumar B

_date - n_は、指定された日付からn日を減算します。時間を差し引くには、24で割るデイバイに変換する必要があります。あなたの場合はto_char(sysdate - (2 + 2/24), 'MM-DD-YYYY HH24')である必要があります。これは、sysdateから2日と2時間になります。

1
Tapan Pandya