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

在Presto中将bigint类型转换为指定格式的timestamp

嘿,这个问题我刚好处理过!先看你给的Col2数据,都是16位的数字,这大概率是微秒级的Unix时间戳(就是从1970-01-01 00:00:00 UTC开始累计的微秒数)。下面分几种常用数据库给你对应的转换方法:

1. MySQL/MariaDB 转换方法

用FROM_UNIXTIME()函数,先把微秒数除以1000000转成秒级时间戳,再指定你要的格式:

SELECT 
  Col1,
  FROM_UNIXTIME(Col2 / 1000000, '%Y-%m-%d %H:%i:%s') AS formatted_time
FROM your_table;

如果后续需要保留微秒精度,把格式里加上%f就行,比如'%Y-%m-%d %H:%i:%s.%f'。

2. PostgreSQL 转换方法

用TO_TIMESTAMP()把秒级时间戳转成timestamp类型,再用TO_CHAR()格式化:

SELECT 
  Col1,
  TO_CHAR(TO_TIMESTAMP(Col2 / 1000000), 'YYYY-MM-DD HH24:MI:SS') AS formatted_time
FROM your_table;

这里HH24是24小时制,如果你需要12小时制可以换成HH12,再加AM/PM标识。

3. SQL Server 转换方法

SQL Server里直接用DATEADD()把微秒数加到Unix时间基准点(1970-01-01 00:00:00),再用FORMAT()输出格式:

SELECT 
  Col1,
  FORMAT(DATEADD(microsecond, Col2, '1970-01-01 00:00:00'), 'yyyy-MM-dd HH:mm:ss') AS formatted_time
FROM your_table;
快速验证时间戳类型

拿你第一个数据1519778444938790来验证:除以1000000得到1519778444.93879,对应UTC时间是2018-03-01 08:00:44,转成北京时间是2018-03-01 16:00:44,你可以核对下业务数据是否符合这个时间范围,确认是不是微秒级时间戳。

内容的提问来源于stack exchange,提问作者Nick Knauer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:52:35