我需要使用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/