我知道在Oracle中,我可以直接减去两个日期列,并检查它们之间有多少天:
SELECT * FROM VOYAGE WHERE endDate - beginDate > 30
但是,有没有一个内置的Oracle函数可以做到这一点呢?就像MySQL的DATEDIFF一样:
SELECT * FROM VOYAGE WHERE DATEDIFF(endDate,beginDate) > 30
我需要它作为一个函数来克服我正在使用的ORM框架中的一个缺点。
创建函数不是一个选项。它必须是真正内置的。
发布于 2019-10-10 14:35:53
在oracle中没有为两天之间的时间内建函数。
有一个months_between
如果需要,您可以编写自己的函数
发布于 2019-10-11 06:23:27
如果您明确需要一个接受两个日期参数并返回若干天的函数,那么您必须编写自己的函数。正如另一个答案所指出的,唯一接受两个日期并返回数字的内置标准函数是MONTHS_BETWEEN
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;
https://stackoverflow.com/questions/58309112
复制相似问题