Google bigquery Google BigQuery中的时间戳和标准SQL

Google bigquery Google BigQuery中的时间戳和标准SQL,google-bigquery,Google Bigquery,我正在尝试(但失败)使用标准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时间戳>“2017-09-18 00:00

我正在尝试(但失败)使用标准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
时间戳>“2017-09-18 00:00”
,但没有成功


谢谢你的帮助。

我相信一个有效的时间戳有一个包含小时、分钟和秒的时间段。时间戳文字省略了秒部分。尝试将其包括在内:

SELECT
    user_id
FROM
    dataset.table
WHERE
    timestamp > TIMESTAMP('2017-09-18 00:00:00')
需要在时间戳中包含秒的原因,以及当前时间戳没有意义的原因,是BigQuery在内部将时间戳存储为历元秒。如果不指定秒数,则无法可靠地存储时间戳

从:

您可以将时间戳数据类型描述为UNIX时间戳或日历日期时间。BigQuery以微秒精度将时间戳数据作为UNIX时间戳在内部存储

正如建议的那样

日期和时间字符串

格式为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")

编写此表达式而不指定额外零的另一种方法是:

TIMESTAMP(DATE "2017-09-18")

你的
timestamp
栏是什么类型的?该死,就是这样。谢谢,很抱歉问了这个愚蠢的问题。你介意举一个考虑时区的例子吗。由于某些原因,这似乎不起作用:时间戳(“2017-01-09 00:30:00.000 UTC”),给出的时间戳将从06:30:00开始,该字符串中指示的“UTC”无效。感谢您的解释。