Redshift - 将纪元字符串转换为时间戳

时间:2016-04-04 09:36:04

标签: mysql amazon-redshift psql

我有一个包含2列epoch_start和epoch_end的表。 我想找出这两个时代的天数差异 我面临的问题是上面的列是字符变化(5000)类型。 我运行的查询是

  

选择datediff(day,'1459762341','1450762341')作为numdays;

我得到的错误是

  

错误:类型为timestamp的输入语法无效:“1459762341”

3 个答案:

答案 0 :(得分:6)

我找到了解决方案 -

  1. 从纪元获取时间戳 -
  2.   

    SELECT(TIMESTAMP'epoch'+'''1459762341'* INTERVAL'1 Second')as   mytimestamp

    1. 两个时代之间的约会 -
    2.   

      选择datediff(day,(TIMESTAMP'epoch'+'''1458762341'* INTERVAL'1 Second'),(TIMESTAMP'epoch'+'''1459762341'* INTERVAL'1 Second'))作为numdays;

答案 1 :(得分:1)

" EPOC"时间只是从1970年1月1日起的秒数,所以它只是该日期秒数的一些计数器。

因此,epic_start实际上可以被认为是start_seconds,而epic_end实际上只是end_seconds。

它们是来自同一起点的秒数的事实是唯一真正重要的事情。

获取两个数字之间的天数,表示来自同一起点的秒数:

天=(end_seconds - start_seconds)/ 60/60/24

SELECT(end_seconds - epic_start)/ 60/60/24 AS numdays

Redshift将返回一个没有小数部分的整数值,因此如果公式返回1.9,则numdays将为1.

答案 2 :(得分:0)

你在datediff()中传递了错误的参数。

SELECT DATEDIFF('2014-11-30','2014-11-29') AS DiffDate 

以上将返回两个给定日期之间的天数差异。 阅读更多关于datediff()的信息datediff