-1

我试图过滤掉日期范围之间的数据,其中还包括空值,例如: start_date = 18/01/2013 和 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')

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

谢谢

4

1 回答 1

0

我对 SQL Server 并不完全熟悉,但无论如何它看起来不像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
    );
于 2013-01-22T07:50:16.400 回答