如何通过将持续时间添加到开始日期SQL中来更新结束日期

时间:2018-06-25 08:22:32

标签: sql oracle

正如标题中所示,我不知道如何将持续时间(从同一张表中)添加到开始日期,以获取结果的结束日期,表如下所示:

create table NR1
(
  id         INTEGER not null,
  price      INTEGER,
  price2     INTEGER,
  start_date DATE,
  end_date   DATE,
  duration   NUMBER
)

我尝试过类似的操作,但是我有一些错误:

update nr1
set end_date =dateadd(MONTH, nr1.duration, nr1.start_date);

它应该可以工作,但是我对MONTH有疑问,所有SQL开发人员都这么说。

3 个答案:

答案 0 :(得分:3)

您可能需要add_months

update NR1
set end_date = add_months(start_date, duration)

答案 1 :(得分:3)

您使用的语法来自其他数据库平台。 Oracle等效为the add_months() function

update nr1
set end_date = add_months(nr1.start_date, nr1.duration);

如果您只是add a plain number to a date,则将其视为(全部或部分)天数。您还可以在其他时间段内使用间隔(通过numtodsinterval()),但要间隔数月则很困难。

通过基本功能,月和日都很简单。

如果您使用的是Oracle的最新版本,则应考虑使用虚拟列,这样就不必维护两个值。

答案 2 :(得分:-3)

这些是完美的SQL语句。

SELECT DATEADD(HOUR, 5, '5:00');
SELECT DATEADD(MINUTE, 5, '5:00');
SELECT DATEADD(SECOND, 5, '5:00');

您可以在此处尝试查询:W3Schools Link