【问题标题】:How do I strip the date off of a datetime string in SQL SSIS?如何从 SQL SSIS 中的日期时间字符串中删除日期?
【发布时间】:2010-10-25 01:09:16
【问题描述】:

我正在处理一个数据仓库项目,想知道如何(最好在数据流中的派生列组件中)从 SQL 日期时间记录中删除日期片段。

一旦我将日期时间转换为时间,我将查找时间以在时间维度表中找到相关的时间记录。

有人可以给我一个简单的函数来在派生列转换中完成这个吗?

示例:将日期时间(例如“12/02/2008 11:32:21 AM”)简单地转换为“11:32:21 AM”。

【问题讨论】:

    标签: sql tsql ssis business-intelligence


    【解决方案1】:

    我只会转换为DT_DBTIME 类型(使用派生列转换或转换类型转换)。 DT_DBTIME 仅包含日期/时间的(小时、分钟、秒)部分,因此您将去掉日期部分。

    【讨论】:

    • 这行得通 - 我必须进行两次数据转换(一个到 DT_DBTIME,然后一个到 DT_STR),所以它看起来有点笨拙 - 但它有效。
    【解决方案2】:

    实际上,如果您像这样反转前 2 个表达式:(DT_DBDATE)(DT_DATE)GETDATE() 而不是(DT_DATE)(DT_DBDATE)GETDATE(),那么您将TRUNCATE 关闭日期字段的时间。

    如果DT_DATE 表达式在DT_DBDATE 表达式之前,您的输出中仍然会有时间部分,但它会被重置为全零。

    【讨论】:

      【解决方案3】:

      如果您需要在变量表达式中执行此操作,Michael 的解决方案将不起作用,但您可以使用以下表达式:

      (DT_DATE)(DT_DBDATE)GETDATE()
      

      (DT_DBDATE) 仅将当前日期和时间转换为日期。但是新的数据类型与 SSIS 的日期时间不兼容。因此,您必须使用 (DT_DATE) 转换为兼容类型。

      此解决方案由 Russel Loski 提供,他已将其发布在他的博客中: http://www.bidn.com/blogs/RussLoski/ssas/1458/converting-datetime-to-date-in-ssis

      【讨论】:

      • 问题是关于删除日期(即“删除”),而不是时间。
      • 不回答原始问题,但帮助我了解如何将我的全长日期时间转换为适合数据库插入的格式。谢谢你:)
      【解决方案4】:

      在为调度应用程序编写报告时遇到了这个问题,需要存储为 datetime 数据类型的一部分的时间。我将日期时间格式化为 0,这给了你这个 mon dd yyyy hh:miAM(或 PM),并且只是做了一个子字符串,它只以 AM/PM 格式返回时间。

      示例如下。

      DECLARE @S DATETIME = GETDATE()
      
      SELECT SUBSTRING(CONVERT(NVARCHAR(30), @S , 0) , 13 , 10) AS ApptTime
          , CONVERT(NVARCHAR(30), @S , 0) AS ApptDate
      

      【讨论】:

        【解决方案5】:

        我个人为此使用了一系列函数。例如:

        ALTER FUNCTION [dbo].[TIMEVALUE]
        (
         @Datetime datetime
        )
        RETURNS datetime
        AS
        BEGIN
            RETURN (@Datetime - CAST(ROUND(CAST(@Datetime AS float), 0, 1) AS datetime))
        END
        

        我很想获得所有功劳,但真的应该归于this guy

        【讨论】:

        • 这是给出 SQL 而不是 SSIS 解决方案的第三个答案!
        • 也许 3 个人犯了同样的错误这一事实表明这是一个容易犯的错误。
        • 或者大多数人没有完整阅读问题并立即发布预设答案。
        猜你喜欢
        • 2015-04-15
        • 2021-04-09
        • 1970-01-01
        • 2010-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-24
        • 1970-01-01
        相关资源
        最近更新 更多