我正在使用与Firebase Analytics集成的bigquery,并且尝试查询event_timestamp与当前时间戳(以小时为单位)之间的差异。我喜欢这样的东西:
SELECT TIMESTAMP_DIFF(event_timestamp, CURRENT_TIMESTAMP(), HOUR)
FROM my-firebase-analytics-table
WHERE event_name = 'session_start'
通过该查询,我在TIMESTAMP_DIFF(event_timestamp, CURRENT_TIMESTAMP(), HOUR)
中遇到错误。错误是:
No matching signature for function TIMESTAMP_DIFF for argument types: INT64, TIMESTAMP, DATE_TIME_PART. Supported signature: TIMESTAMP_DIFF(TIMESTAMP, TIMESTAMP, DATE_TIME_PART)
对于我所做的测试,我可以得到的是event_timestamp字段不是TIMESTAMP字段。他们可以将其转换为时间戳吗?
答案 0 :(得分:2)
通常如果它是INT64,则从纪元开始以毫秒为单位显示
要转换为时间戳,请使用TIMESTAMP_MILLIS(int64_expression),如以下示例所示
#standardSQL
SELECT TIMESTAMP_DIFF(TIMESTAMP_MILLIS(event_timestamp), CURRENT_TIMESTAMP(), HOUR)
FROM `project.dataset.my-firebase-analytics-table`
WHERE event_name = 'session_start'
很明显,它可以是INT64秒或毫秒-因此,在这种情况下,您将使用相应的副本-TIMESTAMP_MICROS或TIMESTAMP_SECONDS