日期时间变量和日期列的空白或空值
问题描述:
当我有一个执行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,但这也不起作用!
答
那么,首先 - 空字符串是不一样的NULL。 NULL(无值)可以“转换”为任何类型,因为每个类型可能处于NULL状态,而空字符串不是没有任何,它可能会或可能不会成功转换为您需要的类型。
二柱不能有没有类型。哪一种是你的专栏CancelledDate
?它是varchar
。我猜,varchar(1)
。它包含空字符串。这是一个有效的日期时间?编号
总是明确指定这样一个虚拟列的类型。而逻辑NULL使用NULL本身,而不是空字符串或零或别的东西。
下面是与NULL返回日期时间列示例代码:
select cast(NULL as datetime) AS [CancelledDate]
from TableX
另外,如果你映射此为.NET DateTime的结构,你可能需要使用的DateTime?类型。 – yelxe