我试图过滤掉日期范围之间的数据,日期范围也包括空值, 例如:start_date = 18/01/2013 and end_date = 20/01/2013
在数据库中的某些数据中,start_date是19/01/2013,end_date = null;我还需要包含这个特定的值, 这是我迄今为止尝试过的查询
SELECT T1.START_DATE,
T1.END_DATE
FROM myTable T1
WHERE to_date(T1.START_DATE, 'DD/MM/yyyy HH24:MI:SS') >= to_date('01/01/2013 10:58:58', 'DD/MM/yyyy HH24:MI:SS')
AND to_date(T1.END_DATE, 'DD/MM/yyyy HH24:MI:SS') <= to_date(IS NULL('21/01/2013 10:58:58', 0), 'DD/MM/yyyy HH24:MI:SS')
我仍然无法找到空值的结果,请让我知道如何解决这个问题。
由于
答案 0 :(得分:0)
我对SQL服务器并不完全熟悉,但看起来to_date()
似乎不是SQL Server函数。我在Oracle Database docs中找到了它的一些参考,所以也许你的意思是Oracle SQL。试试这个:
SELECT
T1.START_DATE,
T1.END_DATE
FROM myTable T1
WHERE
to_date(T1.START_DATE,'DD/MM/yyyy HH24:MI:SS') >= to_date('01/01/2013 10:58:58','DD/MM/yyyy HH24:MI:SS')
AND (
to_date(T1.END_DATE,'DD/MM/yyyy HH24:MI:SS') <= to_date('21/01/2013 10:58:58', 'DD/MM/yyyy HH24:MI:SS')
OR T1.END_DATE IS NULL
);