在日期范围内包含空值

时间:2013-01-22 07:47:13

标签: sql sql-server sql-date-functions

我试图过滤掉日期范围之间的数据,日期范围也包括空值, 例如: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')

我仍然无法找到空值的结果,请让我知道如何解决这个问题。

由于

1 个答案:

答案 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
    );
相关问题