Nid*_*oms 1 sql oracle date-arithmetic
我试图在SQL中添加几个月的现有日期.显示的新列将包含后续列而不是日期列.我在select语句中遇到错误.你帮忙吗?
Create table auctions(
item varchar2(50),
datebought date,
datesold date,
days number
);
Insert into auctions values (‘Radio’,’12-MAY-2001’,’21-MAY-2001’,9);
Select item,datebought,datesold,ADD MONTHS(datesold,3)”followup” from auctions;
Run Code Online (Sandbox Code Playgroud)
您对add_months()函数的使用不正确.这不是两个字,它只是一个(带下划线)
add_months(datesold, 1)
Run Code Online (Sandbox Code Playgroud)
注意下划线_之间ADD和MONTHS.它的函数调用不是运算符.
或者你可以使用:
datesold + INTERVAL '1' month
Run Code Online (Sandbox Code Playgroud)
虽然值得注意的是,间隔的算术是有限的(如果没有破坏),因为它只是"增加"日期值的月值.这可能导致无效日期(例如从1月到2月).虽然这是记录在案的行为(见下面的链接),但我认为这是一个错误(SQL标准要求这些操作" 算术遵守与日期和时间相关的自然规则,并根据公历生成有效的日期时间或间隔结果 ")
有关详细信息,请参阅手册:
http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions011.htm#i76717
http://docs.oracle.com/cd/E11882_01/server.112/e26088 /sql_elements001.htm#i48042
另一件事:
我试图在SQL中添加几个月的现有日期.
那你为什么要用INSERT声明?要更改您应该使用的现有行的数据UPDATE.所以看起来你真正想要的是这样的:
update auctions
set datesold = add_months(datesold, 1)
where item = 'Radio';
Run Code Online (Sandbox Code Playgroud)