如何在条件中测试日期是否为空

时间:2018-07-25 15:12:57

标签: mysql sql prepared-statement where

我需要测试条件中日期是否不为空

String query = "SELECT * FROM employe WHERE date IS NOT NULL date > ? AND date IS NOT NULL date < ? ";
PreparedStatement statement = connessione_db.prepareStatement(query);
statement.setDate(1, data_interval_1);
statement.setDate(1, data_interval_2);

date必须在data_interval_1data_interval_2之间,并且data_interval_1data_interval_2可以为空。

3 个答案:

答案 0 :(得分:0)

只需测试date是否不为空,您就可以这样做:

where date is not null

但是,对于条件,您可以执行以下操作:

where date >= ? and date <= ?

null值永远无法满足条件,因此将隐式进行null检查。

答案 1 :(得分:0)

您不需要对NULL进行检查,因为如果日期为NULL,则范围检查将自动失败。试试这个版本:

String query = "SELECT * FROM employe WHERE date > ? AND date < ?";
PreparedStatement statement = connessione_db.prepareStatement(query);
statement.setDate(1, data_interval_1);
statement.setDate(2, data_interval_2);

注意:在上面的代码中,您将两个间隔日期绑定到同一位置。您想同时绑定到位置1和2。

答案 2 :(得分:0)

SELECT * FROM employe WHERE date IS NOT NULL AND (date > ? AND date < ?)

我们首先检查日期是否为空。 如果此条件成立,它将检查日期是否在范围内。