2013-01-22 333 views
-1

進出口試圖濾出的時間範圍,其中還包括空值之間的數據內包含空值, 例如:START_DATE = 18/01/2013日期和結束日期= 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

'TO_DATE()'不是SQL Server的一部分,據我所知。您的示例代碼和您的代碼不匹配,但我不確定它需要糾正的方向。 –

+0

我無法在MSDN中找到對'to_date()'的任何引用,但是查詢當前是否返回了END_DATE不爲空的記錄? –

+1

在對已刪除答案的評論中,您說版本是'1.5.5'。這不是* SQL Server版本號。要麼是您用來訪問SQL Server的非標準客戶端工具的版本號,要麼是(更可能)您沒有使用SQL Server的版本號。如果是這樣的話,請刪除'sql-server'標籤並添加一個與您*使用的數據庫系統相匹配的標籤。 –

回答

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 
    );