如何在BigQuery中将纪元转换为日期?

时间:2018-08-06 19:12:32

标签: sql google-bigquery

所以我想做的就是简单地将纪元转换为日期格式。我得到的输入变化很大,

1518121195039482
1518122508171529
1518120794058543
1518124107950252

所有这些都以微秒为单位。我想知道的是如何将其转换为实际的日期而不是微秒,例如:

2018-07-28
2018-07-01
2018-07-10

我已经尝试过执行几个不同的查询,但是还没有完全了解,在运行查询之前,总是会出错或出错。

任何帮助都会很棒!如果有人需要更多信息,请让我知道,我会尽力向您解释。

-Maykid

3 个答案:

答案 0 :(得分:3)

在BigQuery标准SQL中,您应该为此使用TIMESTAMP_MICROS()函数,如下面的示例所示

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1518121195039482 ts UNION ALL
  SELECT 1518122508171529 UNION ALL
  SELECT 1518120794058543 UNION ALL
  SELECT 1518124107950252 
)
SELECT ts, TIMESTAMP_MICROS(ts)
FROM `project.dataset.table`  

在BigQuery旧版SQL中-您可以为此使用USEC_TO_TIMESTAMP(),如以下示例所示

#legacySQL
SELECT ts, USEC_TO_TIMESTAMP(ts)
FROM 
  (SELECT 1518121195039482 ts),
  (SELECT 1518122508171529 ts),
  (SELECT 1518120794058543 ts),
  (SELECT 1518124107950252 ts)

均返回:

Row ts                  f0_  
1   1518121195039482    2018-02-08 20:19:55.039482 UTC   
2   1518122508171529    2018-02-08 20:41:48.171529 UTC   
3   1518120794058543    2018-02-08 20:13:14.058543 UTC   
4   1518124107950252    2018-02-08 21:08:27.950252 UTC   

答案 1 :(得分:1)

您要TIMESTAMP_MICROS()

select timestamp_micros(1518121195039482)

还有一些功能:timestamp_millis()timestamp_seconds()取决于您所说的“时代”。

答案 2 :(得分:0)

Google BigQuery SQL解决方案:

 SELECT TIMESTAMP_MICROS(1230219000000000) as timestamp;

https://cloud.google.com/bigquery/docs/reference/standard-sql/timestamp_functions