2013-07-25 59 views
2

我有一個包含的DateField一個表(數據類型:浮點)如何將浮動列轉換爲日期時間?

41477.637634537, 
41477.6376233333, 
41477.637631794

我需要這在日期時間YY:MM:DD HH:MM:SS格式

我試過ALTER功能

ALTER TABLE HISTORY 
    ALTER COLUMN DATETIMESTAMP DATETIME 

但是,它返回的那一天是提前一天,儘管時間是正確的。

我想,然後使用

Select * from History 
    where Tag LIKE '%tagname%' AND DateTimeStamp > '2013/7/24 14:23:00' 

請建議,如果sometihng是我的知己聲明不正確 - 或者,如果有更好的方法來做到這一點?

+0

複製? http://stackoverflow.com/questions/11649154/how-to-convert-a-float-column-into-a-datetime – Nithesh

回答

2

看起來您正在使用Excel日期。這些計數自「1900年1月0日」(又名1899-12-31)。

您可以通過添加值,以該日將它們轉換:

select cast('1899-12-31' as datetime) + 41477.637634537; 

我不知道爲什麼內置轉換將是關閉的情況的1。

編輯:

在SQL Server 2008中,以下命令返回三個日期和時間:

with t as (
     select 41477.637634537 as col union all 
     select 41477.6376233333 union all 
     select 41477.637631794 
    ) 
select cast('1899-12-31' as datetime) + col 
from t; 
+1

IIRC,SQL Server內部格式基於1900-01-01,所以如果你'關於Excel日期的權利,這將解釋1的問題。 –

+0

@JonSeigel。 。 。那實際上響了一個鐘。令人驚訝的是,同一家公司的兩款軟件產品可能具有如此重要且微妙的不兼容性。 –

+0

@GordonLinoff謝謝!我怎麼概括這整個列 – user2616868

相關問題