将MySQL时间戳字段转换为SQL Server 2005日期字段

时间:2012-04-11 13:04:27

标签: mysql sql sql-server

我一直在谷歌搜索超过一个小时,没有任何运气。

通过CSV将MySQL数据库导入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无效。

3 个答案:

答案 0 :(得分:2)

我猜field8047是varchar字段。

试试这个:

Select *,
  DATEADD(SECOND, cast(field8047 as int), '19700101') as datetime_created_calc
  From [Majestic].[dbo].[hdiyouth]

答案 1 :(得分:1)

假设您有一个表示数字类型的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更改为您的时间戳应该基于的日期。

答案 2 :(得分:0)

将您的字段转换为整数。

Select  DATEADD(SECOND, CAST(field8047 AS INTEGER), '1970/01/01')
Select  DATEADD(SECOND, CAST('60' AS INTEGER), '1970/01/01')