我是Oracle的新手,我遇到了一个问题。我的页面上有一个表单,其中包含START_DATE和END_DATE,我需要将这些值与DB中相应的StartDate和EndDate列进行比较。这些列可以为空,所以我错了。这有什么不同的方法?使用ToDate不会很容易,因为我目前正在使用Filter类来构建我的查询,所以我正在寻找其他选项。
答案 0 :(得分:2)
这将取决于您使用何种逻辑来处理日期。如果开始日期为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插入任意小的和大的值。
但这取决于你具体的逻辑,以确定上述是否合适。