首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle中有减去日期的函数吗?

Oracle中有减去日期的函数吗?
EN

Stack Overflow用户
提问于 2019-10-10 01:10:02
回答 2查看 104关注 0票数 0

我知道在Oracle中,我可以直接减去两个日期列,并检查它们之间有多少天:

代码语言:javascript
运行
复制
 SELECT * FROM VOYAGE WHERE endDate - beginDate > 30

但是,有没有一个内置的Oracle函数可以做到这一点呢?就像MySQL的DATEDIFF一样:

代码语言:javascript
运行
复制
 SELECT * FROM VOYAGE WHERE DATEDIFF(endDate,beginDate) > 30

我需要它作为一个函数来克服我正在使用的ORM框架中的一个缺点。

创建函数不是一个选项。它必须是真正内置的。

EN

回答 2

Stack Overflow用户

发布于 2019-10-10 14:35:53

在oracle中没有为两天之间的时间内建函数。

有一个months_between

如果需要,您可以编写自己的函数

票数 1
EN

Stack Overflow用户

发布于 2019-10-11 06:23:27

如果您明确需要一个接受两个日期参数并返回若干天的函数,那么您必须编写自己的函数。正如另一个答案所指出的,唯一接受两个日期并返回数字的内置标准函数是MONTHS_BETWEEN

代码语言:javascript
运行
复制
select package_name, object_name, overload, count(*), 
       listagg(argument_name||' '||data_type||' '||in_out,';') 
                  within group (order by position) args
from all_arguments
where package_name = 'STANDARD'
and owner = 'SYS'
group by package_name, object_name, overload
having 1=max(case when position = 0 and in_out = 'OUT' 
                   and data_type = 'NUMBER' then 1 end)
and 2 = sum(case when data_type = 'DATE' and in_out = 'IN' then 1 end)
and count(*) = 3;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58309112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档