6

我正在尝试将大查询中捕获的访问开始时间变量转换为可读日期或最好是时间戳。

我正在使用标准 SQL。

我试过使用 sec_to_timestamp 但我相信这只适用于 BQ 中的旧版 SQL。

谷歌文档讨论了从日期表达式和字符串表达式转换为时间戳,但是访问开始时间是一个整数。

https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators

我查看了以下链接并尝试了其中的代码,但出现错误“找不到函数:整数”

Big Query - Google Analytics - 首次访问和购买之间的时间差异

任何其他关于 BQ 捕获的日期/时间的建议都会受到欢迎。

谢谢

4

2 回答 2

12

假设您的开始时间相对于 Unix 纪元以秒为单位,您可以使用TIMESTAMP_SECONDS它来将其转换为时间戳。例如:

#standardSQL
SELECT
  TIMESTAMP_SECONDS(start_time_sec) AS timestamp
FROM (
  SELECT 1488303123 AS start_time_sec
);

如果要将时间戳转换为日期,可以使用EXTRACT可选时区:

#standardSQL
SELECT
  EXTRACT(DATE FROM TIMESTAMP_SECONDS(start_time_sec)
          AT TIME ZONE 'America/Los_Angeles') AS date
FROM (
  SELECT 1488303123 AS start_time_sec
);
于 2017-02-28T17:34:17.290 回答
3

我一直在 BiqQuery 的 ga_realtime_sessions 表中寻找最近的 visitStartTime。我解析时间戳如下:

SELECT
  visitStartTime, 
  TIMESTAMP_SECONDS(visitStartTime) as starttime_UTC,
  DATETIME(TIMESTAMP_SECONDS(visitStartTime), "Europe/Amsterdam") as starttime_LOCAL,
FROM `ga_sessions_*`
ORDER BY visitStartTime desc 
LIMIT 30

产生如下记录:

Row visitStartTime  starttime_UTC             starttime_LOCAL   
1   1562153975      2019-07-03 11:39:35 UTC   2019-07-03T13:39:35
于 2019-07-03T11:48:11.003 回答