如何在 Big Query 中将访问开始时间转换为可读的人类日期或时间戳?

How to convert visit start time to a readable human date or timestamp in Big Query?

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

我使用的是标准 SQL。

我试过使用 sec_to_timestamp,但我相信这只适用于 BQ 中的遗留 SQL。

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

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

我查看了以下 link 并尝试了其中的代码,但出现错误 "function not found: integer"

Big Query - Google Analytics - Time diff between first visit and purchase

BQ 捕获的关于 dates/times 的任何其他建议将不胜感激。

谢谢

假设您的开始时间是相对于 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
);

我在 BigQuery 的 ga_realtime_sessions table 中寻找最近的 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