如何在BigQuery中查询时间戳的原始毫秒级epoch整数值
获取Timestamp的毫秒级Epoch整数方案
直接用对应数据库的内置函数生成整数结果,避免返回timestamp类型被自动格式化,以下是主流数据库的实现:
BigQuery
SELECT UNIX_MILLIS(CURRENT_TIMESTAMP());执行后直接返回毫秒级Epoch整数,不会被转成可读日期。
PostgreSQL
SELECT CAST(EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) * 1000 AS BIGINT);先提取秒级Epoch,乘以1000转为毫秒,再强转成整数类型。
MySQL
SELECT UNIX_TIMESTAMP(CURRENT_TIMESTAMP(3)) * 1000;CURRENT_TIMESTAMP(3)保留毫秒精度,UNIX_TIMESTAMP提取秒级时间戳,乘1000得到毫秒值。Spark SQL
SELECT CAST(current_timestamp() AS BIGINT);Spark中直接将timestamp类型转为BIGINT,得到的就是毫秒级Epoch整数。
核心逻辑是:不要返回原生timestamp类型,而是通过函数直接生成整数类型的结果,这样查询工具就不会自动做格式转换了。
内容的提问来源于stack exchange,提问作者Calicoder
相关产品推荐
相关产品推荐

