【问题标题】:How to add minutes to a date(timestamp) in Oracle?如何在 Oracle 中将分钟添加到日期(时间戳)?
【发布时间】:2016-09-04 04:49:31
【问题描述】:

我创建了以下表格:

create table travel
(
    code         VARCHAR2(3),
    date         timestamp,
    constraint pk_code_travel primary key(code)
);

create table extras
(
    code_extra          VARCHAR2(3),
    code_travel         VARCHAR2(3),
    minutes             NUMBER(3),
    constraint pk_code_extra primary key(code_extra)
);

我插入了以下日期:

insert into travel (code, date)
values('T01',TO_TIMESTAMP('10/01/2016 15:30','DD/MM/YYYY HH24:MI'));
insert into travel (code, date)
values('T02',TO_TIMESTAMP('15/02/2016 17:45','DD/MM/YYYY HH24:MI'));
insert into travel (code, date)
values('T03',TO_TIMESTAMP('01/04/2016 22:00','DD/MM/YYYY HH24:MI'));

insert into extras (code_extra, code_travel, minutes)
values('E01', 'T01', 50); 
insert into extras (code_extra, minutes)
values('E02', 'T02', 123); 
insert into extras (code_extra, minutes)
values('E03', 'T03', 48); 

问题是:如何将“extras”表中的分钟添加到“travel”表的日期中?

例如表“travel”应该是:

T01',10/01/2016 15:30 + 50 分钟。

T02',15/02/2016 17:45 + 123'分钟。

T03',2016 年 1 月 4 日 22:00 + 48 分钟。

我们将不胜感激。

【问题讨论】:

  • 你试过了吗:+ interval '50' minutes'?
  • @GordonLinoff 感谢您的评论

标签: sql oracle date datetime


【解决方案1】:

你可以像这样创建一个表:

create table extras
(
    code_extra          VARCHAR2(3),
    code_travel         VARCHAR2(3),
    minutes             INTERVAL DAY TO SECOND(0),
    constraint pk_code_extra primary key(code_extra)
);

然后您可以通过以下方法之一插入区间值:

INSERT INTO extras (code_extra, code_travel, minutes)
VALUES('E01', 'T01', INTERVAL '50' MINUTE); 
INSERT INTO extras (code_extra, minutes)
VALUES('E02', 'T02', 123 * INTERVAL '1' MINUTE); 
INSERT INTO extras (code_extra, minutes)
VALUES('E03', 'T03', NUMTODSINTERVAL(48, 'MINUTE')); 

或作为现有表中的选择语句:

SELECT code, "DATE" + minutes * INTERVAL '1' MINUTE
FROM travel
    JOIN extras ON code = code_extra;

或

SELECT code, "DATE" + NUMTODSINTERVAL(minutes, MINUTE)
FROM travel
    JOIN extras ON code = code_extra;

顺便说一句,你不应该使用像DATE 这样的保留字作为列名(这就是我用双引号括起来的原因)

【讨论】:

  • 似乎问题是如何将分钟添加到另一个表中的时间戳值。
  • 感谢您的回答:)
猜你喜欢
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
  • 2016-02-19
  • 2017-10-22
  • 1970-01-01
相关资源
最近更新 更多