【问题标题】:Is there a decent technique for SSIS Derived Column date formatting?SSIS派生列日期格式是否有合适的技术?
【发布时间】:2011-02-27 00:49:32
【问题描述】:

我只需要在 SSIS 派生列中编写最繁琐的表达式即可获得格式为“01-JAN-2010”的日期。它看起来像这样:

      

一定有更好的方法......不是吗?

【问题讨论】:

  • +1 使用作品 redonkulous 哈哈

标签: sql-server oracle ssis


【解决方案1】:

考虑使用脚本组件,然后使用Row.stringcol = Row.datecol.ToString("dd-MMM-yyyy") 在数据流中填充新的字符串列。

【讨论】:

    【解决方案2】:

    如果你想使用表达式,你可以用这个来代替:

    RIGHT("0" + (DT_WSTR, 2)DAY(ASSIGNMENT_BEGIN_DATE), 2) + "-" + SUBSTRING("JANFEBMARAPPRMAYJUNJULAUGSEPOCTNOVDEC", (3 * MONTH(ASSIGNMENT_BEGIN_DATE)) - 2, 3) + (DT_WSTR, 4 )YEAR(ASSIGNMENT_BEGIN_DATE)

    没有说它更好。它只是不同且更短。如果您想要更好的控制,请使用 Cade 建议的脚本。

    【讨论】:

      【解决方案3】:

      好吧,现在我感觉自己像头驴了。简单的解决方案是让我的数据源成为一个选择语句,在其中我只需像这样处理该列:

           SELECT to_char(assignment_begin_date, 'dd-MON-yyyy') assignment_begin_date FROM ...

      RDBMS 是 Oracle,顺便说一句。

      然后我不需要做派生列或脚本。

      我已经自我管理了一个涂料,因为没有早点想到它。感谢大家的帮助。

      【讨论】:

      • 我以为你要离开 SQL Server(它没有一种非常简单的方法来执行那种特定的格式),并且我写了一个在退出时格式化它的建议,但是后来决定用 T-SQL 做这件事还是太乱了。我假设您不会进入 SQL Server,因为那样我会问您为什么要将此日期格式化为文本。
      • 谢谢凯德,很抱歉我的小丑浪费了你的时间。它会进入一个平面文件,这就是为什么需要不寻常的格式。
      • 所以根本不通过 SQL Server?
      • @Cade,数据可能最终在另一个进程中的 SQL Server 数据库中,但这个特定的包只是从 Oracle 中提取它并将其放入文件服务器上的平面文件中。否则我只会从 Oracle 中选择并在数据流任务中插入 SQL Server。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多