2016-07-04 157 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