如何在Oracle中从日期中减去小时,这样它也会影响一天



我试着从Oracle中减去日期,所以它甚至影响一天。例如,如果时间戳是2015年6月1日00小时,如果我减去2小时,我希望能够到2014年5月31日22小时。

我试着

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

但它只减去小时;

其他人评论说(不正确地)使用2/11来指定所需的间隔。

我个人更喜欢用ANSI interval字面值写这样的东西,这使得读取查询更容易:

sysdate - interval '2' hour

它还具有可移植的优点,许多DBMS都支持这一点。而且我不需要打开计算器来计算这个表达式的意思是多少小时——我的心算很差;)

试试这个:

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,即前一天

sysdate - (2/11)

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

DATE_value - 2/24

使用interval:

DATE_value - interval '2' hour

date - n将从给定日期减去n天。为了减去小时,你需要把它转换成一天的时间除以24。在您的情况下,它应该是to_char(sysdate - (2 + 2/24), 'MM-DD-YYYY HH24')。这将从sysdate中减去2天零2小时。

你应该把小时除以24而不是11
这样的:
select to_char(sysdate - 2/24, 'dd-mon-yyyy HH24') from dual

最新更新