在 SSIS 中将日期 DD.MM.YYYY hh:mm:ss 转换为 YYYY-MM-DD
Posted
技术标签:
【中文标题】在 SSIS 中将日期 DD.MM.YYYY hh:mm:ss 转换为 YYYY-MM-DD【英文标题】:Convert date DD.MM.YYYY hh:mm:ss to YYYY-MM-DD in SSIS 【发布时间】:2017-05-19 11:29:56 【问题描述】:我正在开发一个 SSIS 包,它从 SAP
读取数据。我创建了ADO.Net
源,它从ODBC connection
读取数据。
从SAP
的数据中,有一个表有日期列,日期值的格式是12.03.2014 00:00:00
现在我想把它转换成日期时间格式YYYY-MM-DD
。
我可以在SQL command
的ADO.Net
源工具中执行此操作吗?
【问题讨论】:
试试这个 REPLACE((DT_WSTR, 10)(DT_DBDATE)GETDATE(),"-","") 感谢您的回复,让我试试这个。 @Srini131 收到此错误 - 错误 [42000] [IBM] [System i Access ODBC 驱动程序] [DB2 for i5 / OS] SQL0104 - 令牌 DT_WSTR 无效。有效令牌:(. (CWBODBC.DLL) 【参考方案1】:--Yes you Can do it In SQL SERVER
Declare @Date Datetime
SET @Date='12.03.2014 00:00:00'
SELECT @Date=CONVERT(NVARCHAR(50),@Date,112)
SELECT @Date
【讨论】:
用户在 SSIS 中询问 @Srini131 OP 实际上要求 我可以在 ADO.Net 源工具的 SQL 命令 中执行此操作吗? 112 为您提供YYYYMMDD
,您可以为 126 并在包含连字符的地方左移。我不确定这种语法是否适用于 SAP 的驱动程序【参考方案2】:
我真的不知道如何使用 SAP 驱动程序使用 SQL 命令来实现这一点,但这里有一些有用的信息
如果您使用 DateTime 数据类型,Datetime 不会以其格式存储,它们存储为 Number OR string 值 (存储日期的方式有很多种(与使用的数据提供者有关);小数或两个整数,...)。
欲了解更多信息,请查看:
SAP forumns - date and time field values Basic SAP Data Types how are dates stored in sql server CAST vs ssis data flow implicit conversion difference How are dates stored in Excel?日期格式与您的区域、应用程序、DBMS 设置相关
如果您想以其他格式显示日期,您必须更改相关设置。或者您可以使用脚本组件将其转换为具有特定格式的String
数据类型:
如果日期存储为字符串
如果日期列是一个字符串,您可以在脚本组件中使用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.MM.yyyy HH:mm:ss",provider).ToString("yyyy-MM-dd");
有关此方法的更多信息,您可以参考以下链接:
DateTime.ParseExact Method C# DateTime.Parse如果日期存储为日期
using System;
using System.Globalization;
CultureInfo provider = CultureInfo.InvariantCulture;
public override void Input0_ProcessInputRow(Input0Buffer Row)
Row.outDate = Row.inDate.ToString("yyyy-MM-dd");
【讨论】:
【参考方案3】:获取驱动列组件并按预期转换日期,如下例所示:
(DT_STR,4,1252)DATEPART("yyyy",GETDATE()) + RIGHT("0" + "-" + (DT_STR,2,1252)DATEPART("mm",GETDATE()),2) + "-" + RIGHT("0" + (DT_STR,2,1252)DATEPART("dd",GETDATE()),2)
【讨论】:
以上是关于在 SSIS 中将日期 DD.MM.YYYY hh:mm:ss 转换为 YYYY-MM-DD的主要内容,如果未能解决你的问题,请参考以下文章
在 Hive 中将 dd/mm/yyyy/hh/mm/ss 格式更改为 yyyymm
SSIS输出日期为DD / MM / YYYY 00:00:00
为啥 oracle 像日期“dd/mm/yyyy”一样插入“hh24:mi:ss”
SQL Server 格式日期 DD.MM.YYYY HH:MM:SS