Oracle在SQL中添加1小时

时间:2014-10-22 14:33:57

标签: sql oracle

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

select DATE_ADD(hh,1,'2014-10-15 03:30:00 pm') from dual

我一直在阅读那些说使用dateAdd或date_add的旧文章,但我一直收到无效的标识符错误。

6 个答案:

答案 0 :(得分:27)

select sysdate + 1/24 from dual;

sysdate 是一个没有参数的函数,它返回DATE类型
+ 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;

答案 1 :(得分:10)

使用间隔:

select some_date_column + interval '1' hour 
from your_table;

答案 2 :(得分:4)

您可以使用INTERVAL类型或只添加计算出的数字值 - " 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秒"。 另见:http://www.oracle-base.com/articles/misc/oracle-dates-timestamps-and-intervals.php

另外你必须记住oracle有两种间隔类型 - DAY TO SECOND和YEAR TO MONTH。 至于我,一种间隔类型会更好,但我希望oracle中的人知道,他们做了什么;)

答案 3 :(得分:1)

计算很简单

如果您想在日期中添加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

对于静态日期,您有以下答案。

答案 4 :(得分:1)

旧方式

import { StepFunctions } from 'aws-sdk';

const clients = {
  stepFunctions: new StepFunctions();
}

const createExecutor = ({ clients }) => async (event) => {
  console.log('Executing media pipeline job');

  const params = {
    stateMachineArn: '<state-machine-arn>',
    input: {},
    name: 'new-job',
  };

  const result = await stepFunctions.startExecution(params).promise();
  // { executionArn: "string", startDate: number }

  return result;
};

const startExecution = createExecutor({ clients });

// Pass in the event from the Lambda e.g S3 Put, SQS Message
await startExecution(event);

使用时间间隔

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

答案 5 :(得分:0)

要从DATE添加/减去,您有2个选择:

方法1: 最简单的方法是使用+-DATEADD_MONTHS()函数中添加/减去天,小时,分钟,秒等。从DATE中减去月份和年份。为什么呢这是因为从几天开始,您可以获得小时数和任何更小的单位(1小时= 1/24天),(1分钟= 1/1440天),等等。但是您不能获得数月和数年,因为这取决于月份和年份本身,因此ADD_MONTHS() add_years(),因为从月份中可以得到年份(1年= 12个月)。

让我们尝试一下:

SELECT TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS')             FROM dual;        -- prints current date:    19-OCT-2019 20:42:02 
SELECT TO_CHAR((SYSDATE + 1/24), 'DD-MON-YYYY HH24:MI:SS')    FROM dual;        -- prints date + 1 hour:   19-OCT-2019 21:42:02
SELECT TO_CHAR((SYSDATE + 1/1440), 'DD-MON-YYYY HH24:MI:SS')  FROM dual;        -- prints date + 1 minute: 19-OCT-2019 20:43:02 
SELECT TO_CHAR((SYSDATE + 1/86400), 'DD-MON-YYYY HH24:MI:SS') FROM dual;        -- prints date + 1 second: 19-OCT-2019 20:42:03 
-- Same goes for subtraction.

SELECT SYSDATE                  FROM dual;       -- prints current date:     19-OCT-19
SELECT ADD_MONTHS(SYSDATE, 1)   FROM dual;       -- prints date + 1 month:   19-NOV-19
SELECT ADD_MONTHS(SYSDATE, 12)  FROM dual;       -- prints date + 1 year:    19-OCT-20
SELECT ADD_MONTHS(SYSDATE, -3)  FROM dual;       -- prints date - 3 months:  19-JUL-19

方法2::您可以使用INTERVAL轻松地从日期中减去间隔(持续时间)。不仅如此,您还可以同时添加或减去多个单位(例如5小时6分钟等)。 例子:

SELECT TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS')                                        FROM dual;        -- prints current date:                 19-OCT-2019 21:34:15
SELECT TO_CHAR((SYSDATE + INTERVAL '1' HOUR), 'DD-MON-YYYY HH24:MI:SS')                  FROM dual;        -- prints date + 1 hour:                19-OCT-2019 22:34:15
SELECT TO_CHAR((SYSDATE + INTERVAL '1' MINUTE), 'DD-MON-YYYY HH24:MI:SS')                FROM dual;        -- prints date + 1 minute:              19-OCT-2019 21:35:15
SELECT TO_CHAR((SYSDATE + INTERVAL '1' SECOND), 'DD-MON-YYYY HH24:MI:SS')                FROM dual;        -- prints date + 1 second:              19-OCT-2019 21:34:16
SELECT TO_CHAR((SYSDATE + INTERVAL '01:05:00' HOUR TO SECOND), 'DD-MON-YYYY HH24:MI:SS') FROM dual;        -- prints date + 1 hour and 5 minutes:  19-OCT-2019 22:39:15
SELECT TO_CHAR((SYSDATE + INTERVAL '3 01' DAY TO HOUR), 'DD-MON-YYYY HH24:MI:SS')        FROM dual;        -- prints date + 3 days and 1 hour:     22-OCT-2019 22:34:15
SELECT TO_CHAR((SYSDATE - INTERVAL '10-3' YEAR TO MONTH), 'DD-MON-YYYY HH24:MI:SS')      FROM dual;        -- prints date - 10 years and 3 months: 19-JUL-2009 21:34:15
相关问题