【问题标题】:How to convert mixmatch date to one uniform date in ssis?如何将混合匹配日期转换为 ssis 中的一个统一日期?
【发布时间】:2019-12-10 15:31:34
【问题描述】:

我有一个如下所示的 trade_date 列:

Trade_date
10-02-2012
1-23-2014
feb-14-2016
1/2/2012
01/02/2012
01/01/12
2014/10/26

我想在转换后有一种统一的格式,即 MM/dd/yyyy。 有没有人遇到过这个问题或者有人知道如何解决这个问题?

【问题讨论】:

  • 假设数据是字符串/字符而不是日期数据类型?您可以编写一个函数(或 C# 脚本任务)来获取日期并根据您已有的日期格式执行不同的操作
  • 我认为您可能会遇到的问题 - 将日期列保存为字符串数据类型 - 是否保存了欧洲日期。例如:10-02-2012 - 是 10 月 2 日还是 2 月 10 日?如果您可以 100% 确定您的数据中没有欧洲日期,那么我会遵循 Brad 上面描述的内容,您必须执行脚本(或 tsql 函数或存储过程)以通过模式匹配进行转换。

标签: sql-server date datetime ssis etl


【解决方案1】:

您需要一个脚本组件来执行此操作,因为您希望转换多种日期格式。首先,您必须创建一个包含所有所需格式的字符串数组,然后您应该使用DateTime.ParseExact() 函数

添加脚本组件后,确保添加字符串类型的新输出列(或日期,如果您希望将值转换为日期列),然后在脚本中使用以下代码行:

string[] formats = {"dd-MM-yyyy","yyyy-MM-dd","d-M-yyyy","MMM-dd-yyyy","dd/MM/yy","yyyy/MM/dd","dd/MM/yyyy","};
Row.outColumn = DateTime.ParseExact(Row.inColumn,formats,System.Globalization.CultureInfo.InvariantCulture).ToString("MM/dd/yyyy");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    相关资源
    最近更新 更多