正如标题中所示,我不知道如何将持续时间(从同一张表中)添加到开始日期,以获取结果的结束日期,表如下所示:
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开发人员都这么说。
答案 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