0

我已经在谷歌上搜索了一个多小时,没有任何运气。

通过 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 无效。

4

3 回答 3

2

我猜 field8047 是一个varchar字段。

试试这个:

Select *,
  DATEADD(SECOND, cast(field8047 as int), '19700101') as datetime_created_calc
  From [Majestic].[dbo].[hdiyouth]
于 2012-04-11T13:42:02.337 回答
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您的时间戳应该基于的任何日期。

于 2012-04-11T13:33:46.733 回答
0

将您的字段转换为整数。

Select  DATEADD(SECOND, CAST(field8047 AS INTEGER), '1970/01/01')
Select  DATEADD(SECOND, CAST('60' AS INTEGER), '1970/01/01')
于 2012-04-11T13:36:38.967 回答