MySQL查询到Oracle查询转换

时间:2013-04-03 12:33:07

标签: mysql oracle

考虑像

这样的SQL查询
SELECT a, b>now() as expired 
FROM TABLE;

其中b是日期并检查当前日期。

我发现now()应该替换为SYSDATE

但如何写

 b > (SYSDATE) as expired 

for Oracle?

1 个答案:

答案 0 :(得分:3)

Oracle没有布尔数据类型(MySQL也没有,但它只是将任何不等于零的数字视为“true”),因此您需要返回一个表示过期的数字0和{{1} }

1

请注意,Oracle的select a, case when b > sysdate then 1 else 0 end as expired from the_table; 数据类型包含时间。因此,DATE会返回SYSDATE之类的内容。您可能希望在比较中使用trunc():

2013-04-04 14:43:12

当然你可以在case语句中返回任何内容,而不仅仅是数字

select a, 
       case 
          when trunc(b) > trunc(sysdate) then 1
          else 0
       end as expired
from the_table;