You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Presto中将Epoch Time转换为IST时区的可读日期时间

解决Presto中Epoch时间戳转IST时区时间的问题

问题出在你当前的查询只是将Epoch时间转换为了UTC时间,而IST(印度标准时间)是UTC+05:30,所以直接格式化UTC时间会比实际IST时间早5.5小时(也就是你看到的转换结果比实际需求的IST时间提前了5.5小时)。

修正步骤:

  1. 正确处理毫秒级Epoch时间:你的startdatetime是13位的毫秒级时间戳,你之前取前10位转成秒是可行的,但更严谨的方式是直接除以1000.0转换为秒级时间戳,避免截断带来的误差。
  2. 转换时区到IST:使用Presto的at time zone函数,将from_unixtime返回的UTC时间转换为IST时区(时区标识符用Asia/Kolkata,这是Presto认可的IST标准时区)。
  3. 格式化输出:再用date_trunc和to_char处理成你需要的格式。

修正后的查询语句:

select 
  to_char(
    date_trunc('hour', from_unixtime(CAST(startdatetime AS double)/1000) at time zone 'Asia/Kolkata'), 
    'dd-mm-yyyy hh24'
  ) as ist_formatted_datetime,
  startdatetime 
FROM rocmetricsolr 
limit 10;

如果你坚持用取前10位的方式,也可以这样写:

select 
  to_char(
    date_trunc('hour', from_unixtime(CAST(substr(startdatetime, 1, 10) AS double)) at time zone 'Asia/Kolkata'), 
    'dd-mm-yyyy hh24'
  ) as ist_formatted_datetime,
  startdatetime 
FROM rocmetricsolr 
limit 10;

验证示例:

拿你例子里的1526905879116来说:

  • 转成秒级是1526905879.116,对应的UTC时间是2018-05-21 23:11:19
  • 转换为IST时区后是2018-05-22 04:41:19
  • date_trunc('hour')后就是2018-05-22 04,格式化后是22-05-2018 04,这才是正确的IST时间。

内容的提问来源于stack exchange,提问作者Rittick Kundu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:38:58