Oracle在SQL中添加1小时

Oracle在SQL中添加1小时,sql,oracle,Sql,Oracle,我只是想给一个值加上1个小时,在哪里以及为什么要这样做有点复杂,但基本上我只需要查询这样的东西 select DATE_ADD(hh,1,'2014-10-15 03:30:00 pm') from dual 我一直在读关于使用dateAdd或date_add的旧文章,但我一直收到无效的标识符错误 select sysdate + 1/24 from dual; sysdate是一个不带参数的函数,返回日期类型 +1/24为日期增加1小时 select to_char(to_date('20

我只是想给一个值加上1个小时,在哪里以及为什么要这样做有点复杂,但基本上我只需要查询这样的东西

select DATE_ADD(hh,1,'2014-10-15 03:30:00 pm') from dual
我一直在读关于使用dateAdd或date_add的旧文章,但我一直收到无效的标识符错误

select sysdate + 1/24 from dual;
sysdate是一个不带参数的函数,返回日期类型 +1/24为日期增加1小时

select to_char(to_date('2014-10-15 03:30:00 pm', 'YYYY-MM-DD HH:MI:SS pm') + 1/24, 'YYYY-MM-DD HH:MI:SS pm') from dual;
使用间隔:

select some_date_column + interval '1' hour 
from your_table;

您可以使用间隔类型,也可以只添加计算的数值-1等于1天

第一种方式:

select date_column + INTERVAL '0 01:00:00' DAY TO SECOND from dual;
第二种方式:

select date_column + 1/24 from dual;
当您需要添加一个复杂的值时,第一种方法更方便—例如,1天3小时25分49秒。 另见:

您还必须记住,oracle有两种间隔类型—从天到秒和从年到月。
对我来说,一个区间类型会更好,但我希望oracle的人知道他们在做什么

计算很简单

如果要在日期中添加1小时

每天都有24小时,你可以补充

select sysdate + 1/24 from dual; 
如果您想添加1天

select sysdate + 24/24 from dual; 

or 

select sysdate + 1 from dual; 

same as for 2, 3 , 4 day
对于静态日期,您的答案如下。

旧方法:

使用间隔:

要添加/减去日期,您有两个选项:

方法1: 最简单的方法是使用+和-加/减天、小时、分钟、秒等。。从一个日期开始,并使用ADD_MONTHS函数从一个日期开始添加/减去月份和年份。为什么?这是因为从天开始,你可以得到小时和任何更小的单位1小时=1/24天,1分钟=1/1440天,等等。。。但是你不能得到月和年,因为这取决于月和年本身,因此加上月和不加上年,因为从月,你可以得到年1年=12个月

让我们试试:

从dual中选择“DD-MON-YYYY HH24:MI:SS”作为\u CHARSYSDATE;-打印当前日期:2019年10月19日20:42:02 从dual中选择“CHARSYSDATE+1/24,'DD-MON-YYYY HH24:MI:SS'打印日期+1小时:2019年10月19日21:42:02 从dual中选择“CHARSYSDATE+1/1440,'DD-MON-YYYY HH24:MI:SS'打印日期+1分钟:2019年10月19日20:43:02 从dual中选择“CHARSYSDATE+1/86400,'DD-MON-YYYY HH24:MI:SS'打印日期+1秒:2019年10月19日20:42:03 -减法也是如此。 从dual中选择SYSDATE;-打印当前日期:19-10-19 从dual中选择ADD_monthsysdate,1;-打印日期+1个月:19-11-19 从dual中选择ADD_monthsysdate,12;-打印日期+1年:20年10月19日 从dual中选择ADD_monthsysdate,-3;-打印日期-3个月:19-JUL-19 方法2:使用间隔,您可以轻松地从日期中选择或减去间隔持续时间。除此之外,您还可以同时添加或减去多个单位,例如5小时和6分钟等。。 示例:

从dual中选择“DD-MON-YYYY HH24:MI:SS”作为\u CHARSYSDATE;-打印当前日期:2019年10月19日21:34:15 从dual中选择\u CHARSYSDATE+间隔“1”小时,'DD-MON-YYYY HH24:MI:SS'打印日期+1小时:2019年10月19日22:34:15 从dual中选择\u CHARSYSDATE+间隔'1'分钟,'DD-MON-YYYY HH24:MI:SS'打印日期+1分钟:2019年10月19日21:35:15 从dual中选择\u CHARSYSDATE+间隔“1”秒,'DD-MON-YYYY HH24:MI:SS'打印日期+1秒:2019年10月19日21:34:16 从dual中选择以_CHARSYSDATE+间隔“01:05:00”小时到秒,“DD-MON-yyyyy HH24:MI:SS;”打印日期+1小时5分钟:2019年10月19日22:39:15 从dual中选择\u CHARSYSDATE+间隔'3 01'天到小时'DD-MON-YYYY HH24:MI:SS'打印日期+3天零1小时:2019年10月22日22:34:15 从dual中选择以_CHARSYSDATE-间隔“10-3”年到月,“DD-MON-YYYY HH24:MI:SS;”打印日期-10年零3个月:2009年7月19日21:34:15
我不想要sysdate,我有一个静态值,我从另一个查询中得到,我需要添加1小时到它。从dual中选择“2014-10-15 03:30:00 pm”+1/24;给我的是无效的number@Travis更新答案谢谢!我将尽快接受答案,因为它将允许我注意到interval需要一个字符串,并且不会自动转换。如果您使用预先准备好的语句,这可能会导致问题:某些日期列+间隔:小时数小时数小时数将抛出ORA-00923:FROM关键字未在预期的位置找到。@lvaroG.Vicario:您可以使用以下方法来解决此问题:某些日期列+间隔“1”小时数*:小时数
SELECT DATE_COLUMN + 1 is adding a day
SELECT DATE_COLUMN + N /24 to add hour(s) - N being number of hours
SELECT DATE_COLUMN + N /1440 to add minute(s) - N being number of minutes
SELECT DATE_COLUMN + N /86400 to add second(s) - N being number of seconds
SELECT DATE_COLUMN + INTERVAL 'N' HOUR or MINUTE or SECOND - N being a number of hours or minutes or seconds.