首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BigQuery:将纪元转换为时间戳

BigQuery:将纪元转换为时间戳
EN

Stack Overflow用户
提问于 2016-06-16 22:02:20
回答 2查看 41.1K关注 0票数 17

我正在尝试范围连接两个表,如下所示

代码语言:javascript
运行
复制
SELECT *
FROM main_table h
INNER JOIN
    test.delay_pairs d
ON
    d.interval_start_time_utc < h.visitStartTime
    AND h.visitStartTime < d.interval_end_time_utc

其中h.visitStartTimeINT64时期,d.interval_start_time_utcd.interval_end_time_utc是适当的TIMESTAMP

以上操作失败,并显示以下内容

代码语言:javascript
运行
复制
No matching signature for operator < for argument types: TIMESTAMP, INT64. Supported signature: ANY < ANY

TIMESTAMP()CAST(d.interval_start_time_utc AS INT64)中包装h.visitStartTime都不起作用。如何在BigQuery的标准SQL方言中使这两种语言具有可比性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-16 23:43:29

你可以使用像TIMESTAMP_SECONDSTIMESTAMP_MILLISTIMESTAMP_MICROS这样的timestamp conversion functions

例如,假设您的h.visitStartTime是从unix时代开始的微秒数。

代码语言:javascript
运行
复制
SELECT *
FROM main_table h
INNER JOIN test.delay_pairs d
ON d.interval_start_time_utc < TIMESTAMP_MICROS(h.visitStartTime)
AND TIMESTAMP_MICROS(h.visitStartTime) < d.interval_end_time_utc  
票数 32
EN

Stack Overflow用户

发布于 2018-06-24 18:50:53

对于标准 sql,您可以使用其中之一,具体取决于精度:

  • DATE_FROM_UNIX_DATE -从天时期到date
  • TIMESTAMP_SECONDS -从秒时期到timestamp
  • TIMESTAMP_MILLIS -从毫秒时期到timestamp
  • TIMESTAMP_MICROS -从微秒时期到时间戳

请参阅此处的文档:https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#timestamp_seconds

使用遗留 sql,您只需使用TIMESTAMP函数并乘以或除以1000,即可将其转换为所需的纪元类型:

代码语言:javascript
运行
复制
SELECT 
  TIMESTAMP(epoch_in_millis / 1000) AS datetime
FROM 
  my_table
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37861500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档