当我有一个执行sql任务时,我有
Select '' AS [CancelledDate] from TableX
我将此列映射到名为CancelledDate
的数据时间变量,但是当我运行Execute Sql Task
时,我收到此错误:
错误:SP2的Sp Get参数处的0xC002F309,执行SQL任务:将值赋给变量“CancelledDate”时发生错误:“字符串未被识别为有效的DateTime。”。 任务失败:Sp获取SP2参数
如果我将''
替换为'01-JAN-1978'
则可行。这必须与列中的Null
和''
有关。
我尝试将NULL(DT_DATE)
放在变量中,并将evaluate表达式设置为True,但这也不起作用!
答案 0 :(得分:3)
首先,空字符串与 NULL 不同。 NULL(无值)可以"转换"对于任何类型,'因为每个类型可能处于NULL状态,而空字符串不是 nothing ,它可能会或可能不会成功转换为您需要的类型。
第二列 - 不能有无类型。您的列CancelledDate
是哪种类型的?它是varchar
。我想,varchar(1)
。它包含空字符串。这是有效的日期时间吗?否。
始终明确指定此类虚拟列的类型。对于逻辑 NULL ,使用NULL本身而不是空字符串或零或其他。
以下是使用 NULL 返回日期时间列的示例代码:
select cast(NULL as datetime) AS [CancelledDate]
from TableX