Sql Oracle函数无法传入日期-天
我试图将日期传递给Oracle函数,但不断出错 这一个工作正常:Sql Oracle函数无法传入日期-天,sql,oracle,Sql,Oracle,我试图将日期传递给Oracle函数,但不断出错 这一个工作正常: SELECT TRUNC(SYSDATE) - 730 DAYS FROM dual; 此函数返回错误:ORA-00907:缺少右括号 SELECT MYFUNCTION(TRUNC(SYSDATE) - 730 DAYS) FROM dual; 当我将此项更改为另一项选择时,它会起作用,但为什么会这样呢??? 我真的很喜欢上面的一个,因为它更容易+如果我需要把它改成月份或年份或其他什么,它很容
SELECT
TRUNC(SYSDATE) - 730 DAYS
FROM
dual;
此函数返回错误:ORA-00907:缺少右括号
SELECT
MYFUNCTION(TRUNC(SYSDATE) - 730 DAYS)
FROM
dual;
当我将此项更改为另一项选择时,它会起作用,但为什么会这样呢???
我真的很喜欢上面的一个,因为它更容易+如果我需要把它改成月份或年份或其他什么,它很容易。但它不起作用
SELECT
MYFUNCTION(
(
SELECT
TRUNC(SYSDATE) - 730 DAYS
FROM
dual
)
)
FROM
dual;
您错误地认为您正在处理的是间隔时间
730天
。但是
SELECT TRUNC(SYSDATE) - 730 DAYS FROM dual;
是
因此,您计算TRUNC(SYSDATE)-730
,其中Oracle需要730来表示730天,因为这是如何定义从日期中添加或减去一个数字的,然后您将此结果列称为“天”
这就解释了原因
SELECT MYFUNCTION(TRUNC(SYSDATE) - 730 DAYS) FROM dual;
导致语法错误;您使用的别名(“天”)不属于该别名
做这个
SELECT MYFUNCTION(TRUNC(SYSDATE) - 730) FROM dual;
或
相反
SELECT MYFUNCTION(TRUNC(SYSDATE) - 730) FROM dual;
SELECT MYFUNCTION(TRUNC(SYSDATE) - INTERVAL '730' DAY(3)) FROM dual;