我需要使用Oracle解码功能比较两个日期,以查看一个日期是否与另一个日期相对应。

我找到了这篇文章-http://www.techonthenet.com/oracle/functions/decode.php

如果date1> date2,则哪个(在底部)声明以下解码函数将返回date2:

decode((date1 - date2) - abs(date1 - date2), 0, date2, date1)

如果date1> = date2,这不会返回date2吗?

还是仅仅是date1> date2?

有没有更简单的解决方案?

最佳答案

如果date2 if 0 - 0 = 0 then date2 else date1,其中两个日期相同。

如果您使用的是8i或更高版本,则更好的解决方案是使用case:

SELECT CASE WHEN date1 >= date2 THEN date2 ELSE date1 END FROM Your_Table;

由于case允许不等号运算符,因此更具可读性。

或者,如果您想更简洁,则可以使用旨在返回n值中较低的值的函数:
SELECT LEAST(date1, date2) FROM Your_Table;

(还有一个GREATEST函数,其作用与此相反。)

关于sql - 使用解码功能在Oracle中比较日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3619549/

10-12 20:19