Sql server 日期时间变量和日期栏中的空白值或空值

Sql server 日期时间变量和日期栏中的空白值或空值,sql-server,visual-studio-2013,ssis,sql-server-2012,Sql Server,Visual Studio 2013,Ssis,Sql Server 2012,当我有一个执行sql任务时 Select '' AS [CancelledDate] from TableX 我将此列映射到名为canceledDate的数据时间变量,但是,当我运行executesql任务时,出现以下错误: 错误:0xC002F309位于SP2的Sp Get参数处,执行SQL任务:为变量“CancelledDate”赋值时出错:“字符串未被识别为有效的日期时间。”。 任务失败:Sp获取SP2的参数 如果我用'01-JAN-1978'替换',它会工作。列中的Null和'一定有问

当我有一个执行sql任务时

Select '' AS [CancelledDate] from TableX
我将此列映射到名为
canceledDate
的数据时间变量,但是,当我运行
executesql任务时,出现以下错误:

错误:0xC002F309位于SP2的Sp Get参数处,执行SQL任务:为变量“CancelledDate”赋值时出错:“字符串未被识别为有效的日期时间。”。 任务失败:Sp获取SP2的参数

如果我用
'01-JAN-1978'
替换
'
,它会工作。列中的
Null
'
一定有问题


我试图在变量中放入
NULL(DT_DATE)
,并将evaluate as expression设置为True,但这也不起作用

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

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

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

下面是返回带有NULLdatetime列的示例代码:

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

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

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

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

下面是返回带有NULLdatetime列的示例代码:

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

此外,如果要将其映射到.Net DateTime结构,则可能需要使用DateTime?此外,如果要将其映射到.Net DateTime结构,则可能需要使用DateTime?类型。