我正在尝试(并且失败)使用标准SQL
在BigQuery中执行以下查询SELECT
user_id
FROM
dataset.table
WHERE
timestamp > TIMESTAMP("2017-09-18 00:00")
我经常收到消息
Query Failed
Error: Invalid timestamp: '2017-09-18 00:00'
我试图绝望地使用2017-09-18T00:00
或者像传统SQL timestamp > "2017-09-18 00:00"
一样没有成功。
感谢您的帮助。
答案 0 :(得分:1)
我认为有效时间戳的时间部分包含小时,分钟,和秒。您的时间戳文字省略了秒部分。试着把它包括在内:
SELECT
user_id
FROM
dataset.table
WHERE
timestamp > TIMESTAMP('2017-09-18 00:00:00')
您需要在时间戳中包含秒数以及当前时间戳无意义的原因是BigQuery内部将时间戳存储为纪元秒。如果不指定秒数,则无法可靠地存储时间戳。
您可以将TIMESTAMP数据类型描述为UNIX时间戳或日历日期时间。 BigQuery在内部将TIMESTAMP数据存储为具有微秒精度的UNIX时间戳。
答案 1 :(得分:1)
日期和时间字符串
日期和时间字符串,格式为YYYY-MM-DD HH:MM:SS。 UTC和 支持Z说明符。
您提供的2017-09-18 00:00
是YYYY-MM-DD HH:MM
。
您需要提供2017-09-18 00:00:00
。
因此,您的查询应如下所示
SELECT
user_id
FROM
dataset.table
WHERE
timestamp > TIMESTAMP("2017-09-18 00:00:00")
答案 2 :(得分:0)
在不指定额外零的情况下编写此表达式的另一种方法是:
TIMESTAMP(DATE "2017-09-18")