将MySQL时间戳字段转换为SQL Server 2005日期字段
问题描述:
我一直在谷歌搜索了一个多小时,没有任何运气。将MySQL时间戳字段转换为SQL Server 2005日期字段
通过CSV将数据库导入到MS SQL Server 2005中,其中Tstamp(时间戳)字段一直困扰着我。
如何将tstamp字段转换为SQL日期字段?
Select *,
DATEADD(SECOND, field8047, 1970/01/01) as datetime_created_calc
From [Majestic].[dbo].[hdiyouth]
新错误消息:消息8116,级别16,状态1,行1个 参数数据类型为varchar为DATEADD函数的参数2无效。
答
我想field8047是varchar
字段。
试试这个:
Select *,
DATEADD(SECOND, cast(field8047 as int), '19700101') as datetime_created_calc
From [Majestic].[dbo].[hdiyouth]
+0
魔法的东西!谢谢,这是一个! – hermanvn 2012-04-11 13:53:29
答
假设您有一个表示数字类型的VARCHAR(),并且该数字类型表示固定日期的秒数。
将您的VARCHAR()转换为数值类型。
然后在DATEADD()中使用该数字。
如果数字太大,请将其分解为DAYS和SECONDS。
SELECT
DATEADD(
DAYS,
CAST([hdiyouth].[Tstamp] AS BIGINT)/(60*60*24),
DATEADD(
SECONDS,
CAST([hdiyouth].[Tstamp] AS BIGINT) % (60*60*24),
0
)
)
FROM
[Majestic].[dbo].[hdiyouth]
如果它做出正确的时间,但错了日期,0
改变任何日期的时间戳应该以此为基础。
我想你只需要'DATEADD(秒, 0)'。如果秒数太大。把它分成几块,先加上日子,再加上秒。 *('x /(60 * 60 * 24)'获得天数。'x%(60 * 60 * 24)'获得秒数。)* – MatBailie 2012-04-11 13:15:14
尝试了您的建议,得到以下错误消息: Msg 321,Level 15 ,状态1,行3 “SECONDS”不是公认的表格提示选项。如果它的目的是作为表值函数的参数,请确保将数据库兼容模式设置为90. – hermanvn 2012-04-11 13:18:27
尝试'SELECT DATEADD(SECONDS,[hdiyouth]。[Tstamp],0)FROM [Majestic]。[dbo [hdiyouth]']。 (或者不管你的TSamp字段被调用)。 – MatBailie 2012-04-11 13:25:32