考虑像
这样的SQL查询SELECT a, b>now() as expired
FROM TABLE;
其中b是日期并检查当前日期。
我发现now()
应该替换为SYSDATE
但如何写
b > (SYSDATE) as expired
for Oracle?
答案 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;