1

我正在尝试将月份添加到 SQL 中的现有日期。显示的新列将有一个后续列,而不是天数列。我在选择语句中遇到错误。你能帮忙吗?

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;
4

3 回答 3

7

您对 add_months() 函数的使用不正确。这不是两个词,它只是一个(带下划线)

add_months(datesold, 1)

注意和_之间的下划线。它是函数调用而不是运算符。ADDMONTHS

或者,您可以使用:

datesold + INTERVAL '1' month

尽管值得注意的是,具有间隔的算术是有限的(如果没有破坏),因为它只是“增加”日期值的月份值。这可能导致无效日期(例如从一月到二月)。尽管这是记录在案的行为(见下面的链接),但我认为这是一个错误(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';
于 2012-11-17T23:02:29.423 回答
0
于 2012-11-17T22:13:14.327 回答
0

This can be used to add months to a date in SQL:

select DATEADD(mm,1,getdate())

This might be a useful link.

于 2012-11-17T22:14:53.337 回答