我正在尝试将几个月添加到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;
答案 0 :(得分:7)
您对add_months()函数的使用不正确。这不是两个字,它只是一个(带有下划线)
add_months(datesold, 1)
请注意_
和ADD
之间的下划线MONTHS
。它的函数调用不是操作符。
或者你可以使用:
datesold + INTERVAL '1' month
虽然值得注意的是,间隔的算术是有限的(如果没有破坏),因为它只是“增加”日期值的月份值。这可能导致无效日期(例如从1月到2月)。虽然这是记录在案的行为(见下面的链接),但我认为这是一个错误(SQL标准要求这些操作“算术遵守与日期和时间相关的自然规则,并根据公历生成有效日期时间或间隔结果< / EM>“)
有关详细信息,请参阅手册:
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';
答案 1 :(得分:0)
您的SQL有印刷引号,而不是标准引号。例如。 ’
与'
不同。这些引号不是分隔字符串值,而是 值的一部分,至少对于我在这里测试的特定SQL而言。
如果这不能解决您的问题,请尝试发布您在问题中收到的错误。无法进行神奇的调试。
答案 2 :(得分:0)