我有一个包含2列epoch_start和epoch_end的表。 我想找出这两个时代的天数差异 我面临的问题是上面的列是字符变化(5000)类型。 我运行的查询是
选择datediff(day,'1459762341','1450762341')作为numdays;
我得到的错误是
错误:类型为timestamp的输入语法无效:“1459762341”
答案 0 :(得分:6)
我找到了解决方案 -
SELECT(TIMESTAMP'epoch'+'''1459762341'* INTERVAL'1 Second')as mytimestamp
选择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