oracle - 甲骨文-PLS-00382 : expression is of wrong type in subtracting dates

标签 oracle function date compiler-errors subtraction

我在Oracle中编译以下函数时遇到麻烦

CREATE OR REPLACE FUNCTION fn1
return binary_double
as
Fecha  DATE;
Dias binary_double;
begin
dbms_output.put_line(CAST(TRUNC(CURRENT_DATE,'DD') AS DATE) - cast(current_timestamp as date));
return Dias;
end;

结果错误
Error(8,27): PLS-00382: expression is of wrong type

但是在函数体内运行相同的表达式
select CAST(TRUNC(CURRENT_DATE,'DD') AS DATE) - cast(current_timestamp as date) from dual

给出预期的结果-两个日期之间的天数
-0.0607060185185185185185185185185185185185

关于此功能可能有什么问题有任何想法吗?

最佳答案

采用:

begin
  dbms_output.put_line(TRUNC(CURRENT_DATE,'DD')  - cast( current_timestamp as date));
end;
/

Current_date返回数据类型DATE的值
Trunct也返回DATE。
因此,您正在尝试将DATE类型转换为DATE类型。

关于oracle - 甲骨文-PLS-00382 : expression is of wrong type in subtracting dates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34957141/

相关文章:

oracle - Oracle 10g数据库如何限制全局内存资源

regex - oracle regex替换(仅保留a-z)

c++ - 分解/分解函数的函数

javascript - Bootstrap 日期时间选择器中的出生日期验证

c# - C# linq 和 ORACLE 对点顺序的不同解释

arrays - 将数组和结构传递给 C 函数

c - 创建反转字符串的函数时出现问题

date - VBScript 如何格式化日期?

php - 在 PHP/MySQL 中使用 Week(Date) 时,如何将一周的第一天设置为星期一?

oracle - Oracle中oracle游标(select ..)查询的目的是什么?