如何在两个可以为null的日期之间查询表?

时间:2013-11-05 08:48:53

标签: sql datetime oracle10g

我有两个文字框,我可以开始&结束日期来自用户。 这里有3个条件。

  • 用户可以填写2个文本框
  • 用户只能填写开始日期(结束日期为空)。
  • 用户只能填写结束日期(开始日期为空)。

最后,我的查询应该是什么?

变量:start_dateend_date

查询:SELECT * FROM kkmail WHERE MAIL_DATE ....

2 个答案:

答案 0 :(得分:3)

SELECT * FROM kkmail 
WHERE (MAIL_DATE >= @start_date OR @start_date is null)
and (MAIL_DATE <= @end_date OR @end_date is null)

答案 1 :(得分:1)

Oracle有LNNVL函数以简洁的方式编写这些类型的查询,虽然有点令人困惑。

SELECT * 
  FROM kkmail 
 WHERE lnnvl(mail_date < @start_date)
   AND lnnvl(mail_date > @end_date);

Demo