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,即前一天。
系统日期-(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)