【发布时间】:2018-01-20 06:50:45
【问题描述】:
我之前一直使用以下格式插入到我的mysql数据库中,并希望保持统一。
INSERT INTO OPENQUERY (ENET, 'SELECT * FROM ActiveDirectory.Computers') -- MYSQL database
SELECT c.[CommonName],
c.[DistinguishedName],
c.[SAMAccountName],
c.[DNSHostName],
c.[Location],
c.[Division],
c.[Department],
c.[ManagedBy],
c.[MachineRole],
CAST(CAST(c.[LastLogon] as timestamp) as datetime) AS LastLogon,
c.[OperatingSystem],
c.[OperatingSystemVersion],
c.[ServicePack],
c.[OU],
c.[CreatedOn],
c.[ChangedOn],
CASE WHEN c.[UserAccountControl] & 2 = 0 THEN 1 ELSE 0 END AS [Enabled] -- Check to see if disabled. Disabled = bitwise of 2; 4098 = 4096 + 2 = Trust Account + Disabled
FROM [IT_ActiveDirectory].[dbo].[ADComputerTable] c -- MSSQL database
在将 MSSQL (c.LastLogon, c.CreatedOn, c.ChangedOn) 中的日期时间字段插入也是日期时间的 mysql 字段时,我的问题出现了。我已经尝试了几乎所有我能想到的CAST() 和CONVERT() 的组合,但我可能错过了一些东西。我也试过把mysql的字段类型改成时间戳。
返回:Conversion failed when converting date and/or time from character string.
MSSQL 不只是将数据发送到 MYSQL 并让它进行转换,这对我来说似乎很奇怪。相反,它看起来像是在尝试转换和匹配数据类型和数据,然后再将其发送到 MYSQL。
如果我不能以这种方式插入它,我愿意接受另一种格式,例如是否可以在 OPENQUERY() SELECT 内进行插入。有什么建议?我现在已经死在水里了。
【问题讨论】:
标签: mysql sql sql-server datetime timestamp