2015-04-22 82 views
1

我正在將SQL數據導入Spotfire分析器。所有的日期和時間字段都以Unix時間戳的形式出現。將此轉換爲我可以在Spotfire中操作的實際日期格式的最佳方法是什麼?轉換Unix時間戳 - Spotfire分析師

回答

2

利用計算列可以計算基於UNIX紀元的日期時間。

我們只需將我們的秒數添加到UNIX紀元的DateTime(JAN 01 1970 00:00:00 UTC)即可獲得結果。下面是我開始寫這篇文章時的UNIX時間的一個例子。

DateAdd("second",1429733486,DateTime(1970,1,1,0,0,0,0)) 

下面是我應該爲你工作:

DateAdd("second",[UNIX_TIMESTAMP_COLUMN],DateTime(1970,1,1,0,0,0,0)) 

記住這些日期生產將在UTC時區爲每1970年1月1日時代。如果您在當地時區需要它們,則可能需要根據當前轉換進一步調整DateAdd函數,以增加/減少時間。此外,如果您觀察夏令時,則可能需要添加一些額外的案例邏輯來處理。

如果您有任何問題或需要進一步澄清,請讓我知道。

+0

有沒有一些方法,我可以在SQL側利用一個UDF?有很多日期/時間欄我不得不這樣做。 –

+0

以類似的邏輯格式,您可以在您的SQL select語句中更改它以與時期進行一些基本的數學運算。在SQL中添加日期(至少Oracle SQL)是以天爲單位完成的。例如。 Sysdate-1是昨天。因此,我們可以添加由(60 * 60 * 24)[secs/min * min/hour * hours/day]分割的UNIX時間戳,並使用to_char將其轉換爲字符串: 'select to_char(to_date('01/01/1970','mm/dd/yyyy')+ 1429733486/86400) from dual' 您可以用您的列替換1429733486,並在SQL中設置每個像這樣的列。 – clesiemo3

+0

@ILoveYou請注意,如果您的unixepoch列值太大,您可能需要先將其轉換爲Real。我不得不在我們的,因爲列是BigInteger類型是SQL Server。 – Keng

0

在7.0和更高版本可以使用

FromEpohTimeSeconds([UNIXDATE]) 

FromEpohTimeMilliseconds([UNIXDATE])