2016-07-04 75 views
0

當我有一個執行SQL任務,我有日期時間變量和日期列的空白或空值

Select '' AS [CancelledDate] from TableX 

我映射此列稱爲CancelledDate數據隨時間變化的,但是當我運行在Execute Sql Task我得到這個錯誤:

Error: 0xC002F309 at Sp Get Parameter for SP2, Execute SQL Task: An error occurred while assigning a value to variable "CancelledDate": "String was not recognized as a valid DateTime.". Task failed: Sp Get Parameter for SP2

如果我更換'''01-JAN-1978'它的工作原理。這在列中必須有Null''的問題。

我試圖把NULL(DT_DATE)放在變量中,並將表達式評估爲True,但這也不起作用!

回答

3

那麼,首先 - 空字符串是不一樣的NULL。 NULL(無值)可以「轉換」爲任何類型,因爲每個類型可能處於NULL狀態,而空字符串不是沒有任何,它可能會或可能不會成功轉換爲您需要的類型。

二柱不能有沒有類型。哪一種是你的專欄CancelledDate?它是varchar。我猜,varchar(1)。它包含空字符串。這是一個有效的日期時間?編號

總是明確指定這樣一個虛擬列的類型。而邏輯NULL使用NULL本身,而不是空字符串或零或別的東西。

下面是與NULL返回日期時間列示例代碼:

select cast(NULL as datetime) AS [CancelledDate] 
from TableX 
+0

另外,如果你映射此爲.NET DateTime的結構,你可能需要使用的DateTime?類型。 – yelxe