gpt4 book ai didi

c# - 在 SSIS 中将月份名称转换为月份编号

转载 作者:行者123 更新时间:2023-11-30 23:11:30 25 4
gpt4 key购买 nike

我有一个输入列“MonthName”,其值采用以下字符串格式 22-MAY-2017 02:29:33.00。我想将其转换为目标表中的 Datetime 数据类型。

为此需要进行以下转换22-MAY-2017 02:29:33.0022-05-2017 02:29:33.00

我如何在派生列任务中实现这一点。
我正在使用下面的表达式来获取值的月份名称部分,但我认为它对我的目的没有太大帮助

SUBSTRING(MonthName,FINDSTRING(MonthName,"-",1) + 1,FINDSTRING(MonthName,"-",2) - FINDSTRING(MonthName,"-",1) - 1) <br/>

上面的表达式创建了一个包含所有月份名称的新列,例如:may、june、july。

最佳答案

使用派生列转换

可以使用下面的表达式

LEFT([MonthName],3) + 
(SUBSTRING( [MonthName],4,3) == "JAN" ? "01" :
SUBSTRING( [MonthName],4,3) == "FEB" ? "02" :
SUBSTRING( [MonthName],4,3) == "MAR" ? "03" :
SUBSTRING( [MonthName],4,3) == "APR" ? "04" :
SUBSTRING( [MonthName],4,3) == "MAY" ? "05" :
SUBSTRING( [MonthName],4,3) == "JUN" ? "06" :
SUBSTRING( [MonthName],4,3) == "JUL" ? "07" :
SUBSTRING( [MonthName],4,3) == "AUG" ? "08" :
SUBSTRING( [MonthName],4,3) == "SEP" ? "09" :
SUBSTRING( [MonthName],4,3) == "OCT" ? "10" :
SUBSTRING( [MonthName],4,3) == "NOV" ? "11" :
SUBSTRING( [MonthName],4,3) == "DEC"? "12":"")
+ RIGHT([MonthName],17)

使用脚本组件

如果日期列是字符串,您可以在脚本组件中使用 DateTime.ParseExact 方法。 (假设outDate是输出列,inDate是输入列)

using System;
using System.Globalization;


CultureInfo provider = CultureInfo.InvariantCulture;

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
Row.outDate = DateTime.ParseExact(Row.inDate,"dd-MMM-yyyy HH:mm:ss.ff",provider).ToString("dd-MM-yyyy HH:mm:ss.ff");
}

有关此方法的更多信息,您可以引用此链接:

也可以在以下链接中查看我的回答,这非常有帮助:

关于c# - 在 SSIS 中将月份名称转换为月份编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44634701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com