日期时间变量和日期列中的空白或空值

时间:2016-07-04 19:08:10

标签: sql-server visual-studio-2013 ssis sql-server-2012

当我有一个执行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,但这也不起作用!

1 个答案:

答案 0 :(得分:3)

首先,空字符串 NULL 不同。 NULL(无值)可以"转换"对于任何类型,'因为每个类型可能处于NULL状态,而空字符串不是 nothing ,它可能会或可能不会成功转换为您需要的类型。

第二列 - 不能有无类型。您的列CancelledDate是哪种类型的?它是varchar。我想,varchar(1)。它包含空字符串。这是有效的日期时间吗?否。

始终明确指定此类虚拟列的类型。对于逻辑 NULL ,使用NULL本身而不是空字符串或零或其他。

以下是使用 NULL 返回日期时间列的示例代码:

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