【问题标题】:SSIS - cast a date to use in an expressionSSIS - 投射日期以在表达式中使用
【发布时间】:2010-06-30 10:42:20
【问题描述】:

我想将日期转换为 ISO 格式,并将其用作 SSIS 表达式中的字符串。

这是我在 T-SQL 中输入的内容

select convert(varchar(8), GetDate(), 112)

这就是我得到的回报

20100630

我的目标 - 是根据日期创建一个存档文件夹。我对创建文件夹的文件系统任务部分进行了排序,我可以这样做......我只需要能够将日期转换为字符串,这样我就可以使用它。

提前致谢。

【问题讨论】:

    标签: sql-server-2005 ssis


    【解决方案1】:

    老问题,更好的答案,来自 Adrian 的评论 here

    尝试进行中间转换以键入 DT_DBDATE。转换为 WSTR 给出了一个 格式为“YYYY-MM-DD”的字符串,很容易整理:

    REPLACE((DT_WSTR,200)(DT_DBDATE)GETUTCDATE(),"-","")

    或不使用REPLACE 来获取YY-MM-DD

    【讨论】:

      【解决方案2】:

      您需要添加一个表达式:

      RIGHT((DT_WSTR, 4) DATEPART("yyyy", GetDate()), 4) + 
      RIGHT("0" + (DT_WSTR,2)DatePart("mm", GetDate()), 2) + 
      RIGHT("0" + (DT_WSTR,2)DatePart("dd", GetDate()), 2)
      

      此表达式将创建您所追求的结果。

      【讨论】:

      • 几乎正确。返回 100630,但我在第一行将 ,2 更改为 ,4,得到 20100630,这正是我想要的。因此,您会得到热烈的掌声,并得到公认的答案。
      【解决方案3】:

      在 SSIS 中,您将使用 DT_STR 或 DT_WSTR 强制转换来完成。举几个例子

      (DT_STR, 4, 1252)YEAR(GETDATE()) + 
      RIGHT("0" + (DT_STR, 2, 1252)MONTH(GETDATE()), 2) + 
      RIGHT("0" + (DT_STR, 2, 1252)DAY(GETDATE()), 2)
      

      (DT_WSTR, 4)YEAR(GETDATE()) + 
      RIGHT("0" + (DT_WSTR, 2)MONTH(GETDATE()),2) + 
      RIGHT("0" + (DT_WSTR, 2)DAY(GETDATE()), 2)
      

      有关详细信息,请参阅 MSDN documentation

      【讨论】:

        【解决方案4】:

        为了补充其他答案,这是我经常使用的参考指南:

        http://sqlis.com/sqlis/post/Expression-Date-Functions.aspx

        【讨论】:

          猜你喜欢
          • 2021-06-09
          • 2017-04-06
          • 1970-01-01
          • 1970-01-01
          • 2014-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-18
          相关资源
          最近更新 更多