2016-01-20 66 views
0

我需要使用日期參數來設計報告(需要在英國的日期格式)日期轉換錯誤報告

原始日期格式:2007-11-30 00:00:00.000

所以,我我正在查詢中使用CONVERT(Date,Start_Date,103):2007-11-30。

現在,在設計報表時,我得到了主數據集查詢的這個錯誤。

主數據集的查詢:

SELECT Col1, Col2, Start_Date, Target_Date, Col3 
FROM Table 
WHERE  (Col1 IN (@Param1)) 
AND (Col2IN (@Param2)) 
AND (Start_Date IN (@Start_Date)) AND (Target_Date IN (@Target_Date)) 

錯誤:轉換失敗時轉換的日期和/或時間從字符串

參數數據類型:日期/時間

START_DATE數據集:

SELECT  Col1, Col2, Start_Date 
FROM   Table 
WHERE  (Col1 IN (@Param1)) AND (Col2 IN (@Param2)) 

在查詢參數我使用此代碼:

=iif(Parameters!Start_Date.Value is nothing,"1/1/1900",Parameters!Start_Date.Value) 

O/P:沒有錯誤

Target_Date數據集(我想包括目標日期安排的開始日期爲NULL,因此使用下面的查詢):

SELECT  Col1, Col2, Start_Date, Target_Date 
FROM   Table 
WHERE  (Col IN (@Param1)) AND (Col2 IN (@Param2)) AND (Start_Date = @Start_Date) 
UNION ALL 
SELECT  NULL AS Expr1, NULL AS Expr2, NULL AS Expr3, Target_Date 
FROM   Table AS Table_1 
WHERE  (Department IN (@Param1)) AND (Col2 IN (@Param2)) AND (@Start_Date IS NULL) 

O/P:無錯誤

有人可以建議我去哪裏錯了嗎?

感謝, ARK

回答

0

假設start_date和Target_Date是一個字符串類型,那麼有可能你會在那裏有一個值,這不是一個日期格式。

您可以通過使用ISDATE()功能測試這一點:

SELECT DISTINCT Start_Date 
FROM Table 
WHERE ISDATE(Start_Date) = 0 

SELECT DISTINCT Target_Date 
FROM Table 
WHERE ISDATE(Target_Date) = 0 

然後,它是你的,你想怎麼治療無效數據。我將它們排除在外BU使用下列內容:

SELECT Col1, Col2, Start_Date, Target_Date, Col3 
FROM Table 
WHERE ISDATE(Start_Date) = 1 
    AND ISDATE(Target_Date) = 1 
    AND Col1 IN (@Param1) 
    AND Col2IN (@Param2) 
    AND Start_Date IN (@Start_Date) 
    AND Target_Date IN (@Target_Date); 
+0

@卡姆蘭:在數據庫中,他們被定義爲START_DATE - 日期時間,null,並且Target_date - 日期時間,不爲空 –

+0

和什麼有關參數的起始日期和Target_Date。 –

+0

我將它們定義爲日期/時間並允許NULL作爲Start_date –