需要一个支持Oracle和Postgre SQL的通用日期格式函数

x3naxklr  于 2023-08-03  发布在  Oracle
关注(0)|答案(1)|浏览(129)

我在Oracle中使用了日期函数trunc,在Postgre中使用了date_trunc,它工作得很好,结果也很匹配。我试图使用通用的单一查询,它应该同时支持Oracle和Postgre SQL。我可以有一些输入,请,与to_char函数,它是给一些无与伦比的结果。
这是我的疑问;/Oracle/ select * from emp e inner join dept d on e.deptno=d.deptno and trunc(sysdate)<=trunc(joining_date);
/Postgre sql/ select * from emp e inner join dept d on e.deptno=d.deptno and date_trunc('day ',current_date)<=trunc('day',joining_date);

2w2cym1i

2w2cym1i1#

不要尝试为不同的RDBMS使用相同的代码。它们支持不同的函数,您应该为每个RDBMS使用适当的函数。
如果你必须这样做(但我相信你实际上并不需要这样做),那么你可以在两个数据库中都使用EXTRACT

select *
from   emp e
       inner join dept d
       on     e.deptno=d.deptno
          and (       EXTRACT(YEAR FROM current_date) < EXTRACT(YEAR FROM joining_date)
              or (    EXTRACT(YEAR FROM current_date) = EXTRACT(YEAR FROM joining_date)
                  AND EXTRACT(MONTH FROM current_date) < EXTRACT(MONTH FROM joining_date))
              or (    EXTRACT(YEAR FROM current_date) = EXTRACT(YEAR FROM joining_date)
                  AND EXTRACT(MONTH FROM current_date) = EXTRACT(MONTH FROM joining_date)
                  AND EXTRACT(DAY FROM current_date) <= EXTRACT(DAY FROM joining_date))
              )

字符串
PostgreSQL fiddleOracle fiddle
然而,这感觉就像你太努力地想得到对两个数据库都有效的东西,而不是在每个数据库中使用适当的函数。

相关问题