Datetime 如何在以时区为IST的presto中将历元时间转换为人类可读的日期

Datetime 如何在以时区为IST的presto中将历元时间转换为人类可读的日期,datetime,timezone,presto,Datetime,Timezone,Presto,我在表中有一列存储历元时间 我想将其转换为人类可读的日期时间戳,时区为IST。我使用下面的查询,但转换不正确,它显示的是上一次05:30 presto:default> select to_char(date_trunc('hour', from_unixtime((CAST(substr(startdatetime,1,10) AS double )))), 'dd-mm-yyyy hh24'),startdatetime FROM rocmetricsolr lim

我在表中有一列存储历元时间

我想将其转换为人类可读的日期时间戳,时区为IST。我使用下面的查询,但转换不正确,它显示的是上一次05:30

presto:default> select to_char(date_trunc('hour',
     from_unixtime((CAST(substr(startdatetime,1,10) AS double )))),
     'dd-mm-yyyy hh24'),startdatetime FROM rocmetricsolr limit 10;


     _col0     | startdatetime 
---------------+---------------
 NULL          | NULL          
 21-05-2018 23 | 1526905879116 
 21-05-2018 23 | 1526905879116 
 21-05-2018 23 | 1526905874892 
 NULL          | NULL          
 21-05-2018 23 | 1526905876216 
 21-05-2018 23 | 1526905876216 
 21-05-2018 23 | 1526905873640 
 21-05-2018 23 | 1526905873640 
 21-05-2018 23 | 1526905903110

假设您有一个表
rocmetricsolr
,在
varchar
类型中有列
startdatetime
,其中前10位表示历元时间戳:

选择
来自时区“美国/洛杉矶”的_unixtime(CAST(substr(startdatetime,1,10)为bigint))


注意:请根据

更改时区名称。如果是固定的,则很容易执行您想要的操作。10或9由于substr不准确,963865200823和1155657969480给出了错误的结果