Redshift - 将纪元字符串转换为时间戳
Redshift - Convert epoch string to timestamp
我有一个 table 有 2 列 epoch_start 和 epoch_end。
我想找出这 2 个纪元的天数差异。
我面临的问题是上面的列是字符变化(5000)类型。
查询 im 运行 是
select datediff(day,'1459762341','1450762341') as numdays;
我得到的错误是
ERROR: invalid input syntax for type timestamp: "1459762341"
您在 datediff() 中传递了错误的参数。
SELECT DATEDIFF('2014-11-30','2014-11-29') AS DiffDate
以上将 return 两个给定日期之间的天数差异。
在此处阅读有关 datediff() 的更多信息 datediff
我找到了解决方案 -
- 从纪元获取时间戳 -
SELECT (TIMESTAMP 'epoch' + '1459762341' * INTERVAL '1 Second ') as
mytimestamp
- 对于两个时期之间的日期差异 -
select datediff(day,(TIMESTAMP 'epoch' + '1458762341' * INTERVAL '1 Second '), (TIMESTAMP 'epoch' + '1459762341' * INTERVAL '1 Second ')) as numdays;
"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 将 return 一个不带小数部分的整数值,因此如果公式 returns 1.9,numdays 将为 1。
我有一个 table 有 2 列 epoch_start 和 epoch_end。
我想找出这 2 个纪元的天数差异。
我面临的问题是上面的列是字符变化(5000)类型。
查询 im 运行 是
select datediff(day,'1459762341','1450762341') as numdays;
我得到的错误是
ERROR: invalid input syntax for type timestamp: "1459762341"
您在 datediff() 中传递了错误的参数。
SELECT DATEDIFF('2014-11-30','2014-11-29') AS DiffDate
以上将 return 两个给定日期之间的天数差异。 在此处阅读有关 datediff() 的更多信息 datediff
我找到了解决方案 -
- 从纪元获取时间戳 -
SELECT (TIMESTAMP 'epoch' + '1459762341' * INTERVAL '1 Second ') as mytimestamp
- 对于两个时期之间的日期差异 -
select datediff(day,(TIMESTAMP 'epoch' + '1458762341' * INTERVAL '1 Second '), (TIMESTAMP 'epoch' + '1459762341' * INTERVAL '1 Second ')) as numdays;
"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 将 return 一个不带小数部分的整数值,因此如果公式 returns 1.9,numdays 将为 1。