【问题标题】:Date Time Variable and the blank or Null Values in a Date Column日期时间变量和日期列中的空白或 Null 值
【发布时间】:2016-07-04 19:08:09
【问题描述】:

当我有一个执行 sql 任务时,我有

Select '' AS [CancelledDate] from TableX

我将此列映射到一个名为 CancelledDate 的数据时间变量,但是当我运行 Execute Sql Task 时,我收到此错误:

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

如果我用'01-JAN-1978' 替换'',它就可以工作。这在列中的Null'' 肯定有问题。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    这是返回 datetime 列的示例代码,其中 NULL

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

    【讨论】:

    • 另外,如果您将其映射到 .Net DateTime 结构,您可能需要使用 DateTime?类型。
    猜你喜欢
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 2010-09-18
    • 1970-01-01
    相关资源
    最近更新 更多