将 SQL Server DATETIMEOFFSET 转换为 mySQL DateTime

Posted

技术标签:

【中文标题】将 SQL Server DATETIMEOFFSET 转换为 mySQL DateTime【英文标题】:Convert SQL Server DATETIMEOFFSET to mySQL DateTime 【发布时间】:2019-09-02 07:30:46 【问题描述】:

我的任务是编写一个 SSIS 包来将多个 SQL Server 数据库转换为 mysql,我当前的问题是来自 SQL Server 的 DATETIMEOFFSET 数据类型。 我尝试过转换该字段,我尝试过转换它,我尝试过转换它然后将它转换为 DATETIME 数据类型,但没有运气。但是我尝试过的一切都导致了这个错误:

[ADO NET Destination [2]] 错误:数据插入过程中发生异常,提供者返回的消息是:ERROR [07006] [MySQL][ODBC 5.3(a) Driver][mysqld-5.6.10 ]不支持转换

关于如何将此 sql server 数据类型导入 mySql 的任何想法?

【问题讨论】:

【参考方案1】:

使用几乎任何样式进行转换都会导致 datetime2 值转换为 世界标准时间。 此外,从 datetime2 到 datetimeoffset 的转换只是将偏移量设置为 +00:00, 根据以下内容,因此这是从 Datetimeoffset(offset!=0) 转换为 日期时间偏移(+00:00)

declare @createdon datetimeoffset
set @createdon = '2008-12-19 17:30:09.1234567 +11:00'

select CONVERT(datetime2, @createdon, 1)
--Output: 2008-12-19 06:30:09.12

select convert(datetimeoffset,CONVERT(datetime2, @createdon, 1))
--Output: 2008-12-19 06:30:09.1234567 +00:00

【讨论】:

【参考方案2】:

您可以使用以下派生列将 DATETIMEOFFSET 转换为 DATETIME 类型:

DATEADD("hh", DATEDIFF("hh",((DT_DBTIMESTAMP)[DataColumn]), [DataColumn]), ((DT_DBTIMESTAMP)[DataColumn]))

更多详情请查看以下文章:

SSIS Convert between datetimeoffset and datetime

【讨论】:

以上是关于将 SQL Server DATETIMEOFFSET 转换为 mySQL DateTime的主要内容,如果未能解决你的问题,请参考以下文章

将 SQL Server 2008 r2 降级到 SQL Server 2008

SQL Server,HQL:如何将 SQL Server 日期时间列字段与日期进行比较

使用存储过程将记录从 SQL Server 复制到 SQL Server (2005)

将数据库从 SQL Server 2012 转移到 SQL Server 2008 [关闭]

通过sql server express将Android应用程序连接到sql server

如何将 SQL Server 2008 R2 SSIS 包升级到 SQL Server 2016?