【发布时间】:2011-08-01 18:58:40
【问题描述】:
我是 Oracle 新手,遇到了问题。我的页面上有一个包含 START_DATE 和 END_DATE 的表单,我需要将这些值与数据库中相应的 StartDate 和 EndDate 列进行比较。这些列可以为空,所以我出错了。解决这个问题有什么不同的方法?使用 ToDate 并不容易,因为我目前正在使用 Filter 类来构建我的查询,所以我正在寻找其他选项。
【问题讨论】:
我是 Oracle 新手,遇到了问题。我的页面上有一个包含 START_DATE 和 END_DATE 的表单,我需要将这些值与数据库中相应的 StartDate 和 EndDate 列进行比较。这些列可以为空,所以我出错了。解决这个问题有什么不同的方法?使用 ToDate 并不容易,因为我目前正在使用 Filter 类来构建我的查询,所以我正在寻找其他选项。
【问题讨论】:
这将取决于您使用什么样的逻辑来处理日期。如果开始日期为 null 意味着“不适用”并且 end_date 也是如此,那么您可以执行以下操作:
WHERE date_I_care_about
BETWEEN nvl(start_date,to_date('19000101','YYYYMMDD'))
AND nvl(start_date,to_date('30000101','YYYYMMDD'))
也就是说,当你没有值时,只需为 start_date 和 end_date 插入任意大小的值。
不过以上是否合适,还要看你的具体逻辑。
【讨论】: