0

私は運がなくても、これを1時間以上グーグルで検索しています。

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 に答える