2011-01-24 9 views
17

UnixタイムスタンプをSQLサーバタイムスタンプに変換する際に問題があります。エポックタイムスタンプをsqlサーバ(人間が判読可能なフォーマット)に変換する

私はExcelシートにデータを持っており、そのデータをツールでインポートします。だから私は、そのエポックタイムスタンプをSQL Serverのタイムスタンプに変換できるコードや構文を探しています。

私は同じフォーマットの3つの異なるカラムを持っています。これらの列の値を変更するにはどうすればよいですか。例について

  • エポックタイムスタンプ--- 1291388960
  • SQL Serverのタイムスタンプ--- 2010-12-03 15:09:20.000

答えて

17

私は同じフォーマットの3つの異なる列を持っています。これらの列の値を変更するにはどうすればよいですか。列名を持つ

表に3列を更新するには、あなたはエポックにDATEADD秒をペアにすることができます(1970年1月1日)、すなわち

update tbl set 
    datetimecol1 = dateadd(s, epochcol1, '19700101'), 
    datetimecol2 = dateadd(s, epochcol2, '19700101'), 
    datetimecol3 = dateadd(s, epochcol3, '19700101') 

あなたはBIGINT以来の場所で更新することはできません。列をdatetime列にすることもできません。それらを3つの他の列に更新する必要があります。

+0

お返事ありがとうございます。心から感謝する.... – Shahsra

13

使用DATEADD function

SELECT DATEADD(ss, 1291388960, '19700101') 

... 1970年1月1日の日付を指定します。この例では、YYYYMMDD f ormat。

DATEADDはDATETIMEデータ型を返しますので、テーブル&が設定されている場合は、必要に応じてINSERT/UPDATEすることができます。詳細を提供し、私は明確にします。 DATETIMEを使用すると、CAST or CONVERTを使用してTSQLの日付を書式設定できます。

+0

私に構文を与えてくれてありがとうが、私は約2000万のレコードを持っています.....どのように私はこれらすべてを変換できますか? – Shahsra

+0

@Shahsra:あなたがやりたいことに依存します - これが一時的なものなら、一時テーブルを使用してください。それ以外の場合は、既存のテーブルに列を追加するか、元のテーブルから新しいテーブルを追加するかのいずれかで、データをダンプする列が必要です。詳細を提供する必要があります。 –

+0

ありがとうございました...私はすでに変更を行った解決策を得ました。あなたの助けを本当に感謝します。 – Shahsra

関連する問題