【发布时间】:2015-09-09 06:51:58
【问题描述】:
我正在使用 LAG() 和 LEAD() 从表中的一个时间戳列中提取 3 个时间戳列:timestamp、prev_timestamp、next_timestamp。我需要做一些简单的日期和时间格式化,但是当我在 prev_timestamp 或 next_timestamp 上使用 MONTH() 之类的函数时,它会返回 NULL。
结果列的架构类型是正确的 (TIMESTAMP),并且由于某种原因,常规时间戳日期和时间格式有效。如何使它正确返回所有 3 列的月份?
示例代码为时间戳列返回月份,为上一个和下一个时间戳列返回 NULL:
SELECT
MONTH(timestamp) AS month,
MONTH(prev_timestamp) AS prev_month,
MONTH(next_timestamp) AS next_month
FROM (
SELECT
timestamp,
LAG(timestamp,1) OVER (PARTITION BY id ORDER BY timestamp) prev_timestamp,
LEAD(timestamp,1) OVER (PARTITION BY id ORDER BY timestamp) next_timestamp
FROM timestamp_table
)
【问题讨论】:
标签: google-bigquery