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

How test if date is null in where condition

我需要在 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可以为空。

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

where date is not null

但是,对于条件,你可以这样做:

where date >= ? and date <= ?

一个 null 值永远不会满足条件,所以这隐含地做了一个 null 检查。

您不需要对 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。

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

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