【问题标题】:Converting teradata timestamp(6) to datetime for SQL Server将 teradata 时间戳 (6) 转换为 SQL Server 的日期时间
【发布时间】:2018-02-10 07:41:31
【问题描述】:

我正在从 SSIS 导出数据,但我的一个项目中出现截断错误:

[TH27 [91]] 错误:“发生截断错误。列名为 'mydate'。”

在输入 (Teradata) 中,我有一个 timestamp(6) 类型的列,在 SQL Server 的输出中,我有一个 datetime 类型的列。

如何将其转换为在使用 SSIS 时不会出现此类错误?

我的尝试(请求 1):

SELECT 
    column1,
    CAST(CAST(CAST(mydate AS DATE FORMAT 'YYYY-MM-DD') AS CHAR(10)) || ' ' 
             || TRIM(EXTRACT(HOUR FROM (mydate))) || ':'
             || TRIM(EXTRACT(MINUTE FROM (mydate))) || ':'
             || TRIM(CAST(EXTRACT(SECOND FROM (mydate)) AS INTEGER)) AS Date) AS mydate,
    column2
FROM table1

更新:

我写的请求在 Teradata 源中,这是我的 SSIS 架构示例

【问题讨论】:

    标签: sql sql-server ssis teradata


    【解决方案1】:

    可能是因为 SQL Server 不支持 6 位小数,所以在 Teradata 上将其转换为 3 位小数的字符串:

    To_Char(myDate,'yyyy-mm-dd hh:mi:ss.ff3')
    

    【讨论】:

      【解决方案2】:

      如果mydate 是时间戳,只需转换:

      select column1,
             cast(mydate as datetime) as column2
      from MyTable
      

      好的,所以在 teradata 中执行意味着您没有日期时间...但您确实有日期和时间:

      select column1,
             cast(mydate as date) as column2date,
             cast(mydate as time) as column2time
      from MyTable
      

      然后您可以使用 ssis 操作数据以将日期和时间组合成 MSSQL 日期时间

      【讨论】:

      • 我收到此错误选择失败。 3706:语法错误:数据类型“日期时间”与定义的类型名称不匹配。我在 teradata 中执行了这个请求
      【解决方案3】:

      我找到了这个解决方案,在SSIS 中对我有用的是删除我们在timestamp(6) 中的最后一部分,然后在timestamp(0) 中转换它。

      select column1,
             CAST(SUBSTRING(CAST(mydate AS CHAR(26)) FROM 1 FOR 19) AS TIMESTAMP(0))
             as mydate 
      from MyTable
      

      【讨论】:

        【解决方案4】:

        不要在日期(时间)上使用强制转换,使用转换。这仅适用于您的计算机;)一旦您必须处理多种文化设置,这可能会失败,因为日期格式的字符串表示形式不同。

        在美国以外,您很快就会遇到此类错误。许多开发系统使用美国设置太容易浏览错误消息,但客户系统在本地语言设置下运行,最糟糕的是在操作系统和数据库的不同语言设置下运行。处理此问题的最佳方法是在内部使用 ISO 格式 (120)。

        【讨论】:

          【解决方案5】:

          在 SSIS 的帮助下将数据从 teradata 加载到 sql。 这对我来说很有用,将Timestamp(6) 转换为 sql server 的日期时间

          To_Char(myDate,'yyyy-mm-dd hh:mi:ss.ff3')
          

          【讨论】:

            猜你喜欢
            • 2022-07-20
            • 2017-12-12
            • 2017-06-04
            • 2017-04-06
            • 1970-01-01
            • 1970-01-01
            • 2016-10-16
            • 1970-01-01
            • 2018-12-03
            相关资源
            最近更新 更多