2011-01-24 60 views
17

我在Unix時間戳轉換爲SQL服務器時間戳的問題。轉換時代時間戳到SQL Server(人類可讀的格式)

我在excel表數據,我將通過一個工具導入數據。所以我正在尋找一個代碼或語法,可以將該時代的時間戳轉換爲SQL服務器的時間戳。

我有相同的格式3名不同的列。我如何更改這些列中的值。

例如:

  • 大紀元時間戳--- 1291388960
  • SQL服務器時間戳--- 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列不能也是一個日期時間列。您必須將它們更新爲另外3列。對於

13

使用DATEADD function

SELECT DATEADD(ss, 1291388960, '19700101') 

...指定1月1日,1970年的日期在這個例子中,它在YYYYMMDD f爲提供ORMAT。

DATEADD將返回一個DATETIME數據類型,所以如果您有一個表&列建立 - 您可以根據您的需要使用函數來INSERT/UPDATE。提供詳細信息,我會澄清。一旦您有DATETIME可以使用,您可以使用CAST or CONVERT在TSQL中格式化日期。

+0

感謝給我的語法,但我有大約20萬條記錄.....我怎麼可以轉換所有那些? – Shahsra 2011-01-24 22:25:31

+0

@Shahsra:取決於你想做什麼 - 如果這是暫時的,請使用臨時表。否則,您需要一個列來轉儲數據 - 通過向現有表添加列或從原始數據克隆新表。你必須提供細節。 – 2011-01-24 22:34:16

相關問題