2015-04-22 134 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])