将月份编号(日期时间或 4 字节整数)转换为月份名称(字符串)SSIS
Converting Month Number(Date Time or 4 byte integer) to Month Name(String) SSIS
我需要将月份数字转换为月份名称。
我将日期时间作为日期类型 - 2009-01-01 00:00:00.000
我还有 4 字节整数数据类型 - 1
例如,如何将此 1 转换为“一月”?
在SQL服务器中,一种方法是:
select datename(month, datefromparts(2000, 1, 1))
第一个“1”是月份的列。年份是任意的。
以下步骤:
- 创建具有日期时间数据类型和赋值的变量。
- 在 ssis 中使用 MONTH 函数提取月份编号并分配给具有整数数据类型的新变量:@[User::newdata]= MONTH( @[User::dbdate])
- 终于使用 if else 条件手动比较所有 12 个月
(可用代码:1)
我认为你在数据流中:
在脚本组件中从 Date:
获取 MOnth Name 真的很容易
向您的数据流添加一个 varchar 列
将您的日期列标记为读取权限
输入以下脚本
Row.[NewColumnName] = Row.[Your Date Column].ToString("MMMM");
结果:
这里是任何日期部分到字符串格式的很好的翻译:
// create date time 2008-03-09 16:05:07.123
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);
String.Format("{0:y yy yyy yyyy}", dt); // "8 08 008 2008" year
String.Format("{0:M MM MMM MMMM}", dt); // "3 03 Mar March" month
String.Format("{0:d dd ddd dddd}", dt); // "9 09 Sun Sunday" day
String.Format("{0:h hh H HH}", dt); // "4 04 16 16" hour 12/24
String.Format("{0:m mm}", dt); // "5 05" minute
String.Format("{0:s ss}", dt); // "7 07" second
String.Format("{0:f ff fff ffff}", dt); // "1 12 123 1230" sec.fraction
String.Format("{0:F FF FFF FFFF}", dt); // "1 12 123 123" without zeroes
String.Format("{0:t tt}", dt); // "P PM" A.M. or P.M.
String.Format("{0:z zz zzz}", dt); // "-6 -06 -06:00" time zone
另外,你问的是宿舍。我不认为这很容易,但这是我从另一个答案中偷来的东西。
构建日期时间扩展:
正常季度:
public static int GetQuarter(this DateTime date)
{
return (date.Month + 2)/3;
}
财政年度季度(此案例适用于从 4 月 1 日开始的季度):
public static int GetFinancialQuarter(this DateTime date)
{
return (date.AddMonths(-3).Month + 2)/3;
}
整数除法会截去小数,得到一个整数结果。将方法放入静态 class,您将有一个扩展方法,如下所示:
Row.calendarQuarter = Row.[your Date Column].GetQuarter()
Row.fiscalQuarter = Row.[your Date Column].GetFinancialQuarter()
我需要将月份数字转换为月份名称。 我将日期时间作为日期类型 - 2009-01-01 00:00:00.000 我还有 4 字节整数数据类型 - 1
例如,如何将此 1 转换为“一月”?
在SQL服务器中,一种方法是:
select datename(month, datefromparts(2000, 1, 1))
第一个“1”是月份的列。年份是任意的。
以下步骤:
- 创建具有日期时间数据类型和赋值的变量。
- 在 ssis 中使用 MONTH 函数提取月份编号并分配给具有整数数据类型的新变量:@[User::newdata]= MONTH( @[User::dbdate])
- 终于使用 if else 条件手动比较所有 12 个月 (可用代码:1)
我认为你在数据流中:
在脚本组件中从 Date:
获取 MOnth Name 真的很容易向您的数据流添加一个 varchar 列
将您的日期列标记为读取权限
输入以下脚本
Row.[NewColumnName] = Row.[Your Date Column].ToString("MMMM");
结果:
这里是任何日期部分到字符串格式的很好的翻译:
// create date time 2008-03-09 16:05:07.123
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);
String.Format("{0:y yy yyy yyyy}", dt); // "8 08 008 2008" year
String.Format("{0:M MM MMM MMMM}", dt); // "3 03 Mar March" month
String.Format("{0:d dd ddd dddd}", dt); // "9 09 Sun Sunday" day
String.Format("{0:h hh H HH}", dt); // "4 04 16 16" hour 12/24
String.Format("{0:m mm}", dt); // "5 05" minute
String.Format("{0:s ss}", dt); // "7 07" second
String.Format("{0:f ff fff ffff}", dt); // "1 12 123 1230" sec.fraction
String.Format("{0:F FF FFF FFFF}", dt); // "1 12 123 123" without zeroes
String.Format("{0:t tt}", dt); // "P PM" A.M. or P.M.
String.Format("{0:z zz zzz}", dt); // "-6 -06 -06:00" time zone
另外,你问的是宿舍。我不认为这很容易,但这是我从另一个答案中偷来的东西。
构建日期时间扩展:
正常季度:
public static int GetQuarter(this DateTime date)
{
return (date.Month + 2)/3;
}
财政年度季度(此案例适用于从 4 月 1 日开始的季度):
public static int GetFinancialQuarter(this DateTime date)
{
return (date.AddMonths(-3).Month + 2)/3;
}
整数除法会截去小数,得到一个整数结果。将方法放入静态 class,您将有一个扩展方法,如下所示:
Row.calendarQuarter = Row.[your Date Column].GetQuarter()
Row.fiscalQuarter = Row.[your Date Column].GetFinancialQuarter()