如何从Oracle中的日期中减去小时数,以便它也影响当天

hi4*_*ppl 19 sql oracle date-arithmetic

我试图从Oracle中减去日期,所以它甚至影响了这一天.例如,如果时间戳是01/June/2015 00小时,如果我减去2小时,我希望能够转到2014年5月31日22小时.

我试过了

to_char(sysdate-(2/11), 'MM-DD-YYYY HH24')
Run Code Online (Sandbox Code Playgroud)

但它只减去了一小时; 它没有触及这一天.

a_h*_*ame 45

其他人评论了(错误的)使用2/11来指定所需的间隔.

我个人更喜欢使用ANSI interval文字编写类似的东西,这使得阅读查询更容易:

sysdate - interval '2' hour
Run Code Online (Sandbox Code Playgroud)

它还具有便携性的优点,许多DBMS支持这一点.另外,我不需要启动一个计算器来查找表达式意味着多少小时 - 我对精神算术非常糟糕;)


小智 7

尝试这个:

SELECT to_char(sysdate - (2 / 24), 'MM-DD-YYYY HH24') FROM DUAL
Run Code Online (Sandbox Code Playgroud)

要使用新的日期实例对其进行测试:

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

输出为:06-10-2015 22:00,即前一天。


Lal*_*r B 5

系统日期-(2/11)

一天由24 hours. 因此,2 hours要从一天中减去,您需要将其除以24

DATE_value - 2/24
Run Code Online (Sandbox Code Playgroud)

使用interval的是相同的:

DATE_value - interval '2' hour
Run Code Online (Sandbox Code Playgroud)