如何从BigQuery获取UTC中的当前TIMESTAMP?

时间:2018-12-25 09:30:57

标签: sql google-bigquery

我要添加到<cc:CustomControl1 Textaa="{Binding name}" /> 中的查询TIMESTAMP列中。

我知道BigQuery具有UTC功能,但没有说明如何将其转换为CURRENT_TIMESTAMP()

UTC中,我会这样做:

MYSQL

BigQuery(仅适用于标准SQL)中的等效项是什么?

1 个答案:

答案 0 :(得分:4)

TIMESTAMP不存储或使用时区,如documentation中所述。进行解析时,它可能具有从保存时开始转换的时区。

  

时间戳表示绝对时间点,与任何时区或约定(例如夏令时)无关。

更具体地说

  

时间戳是从UTC 1970-01-01 00:00:00 UTC开始的偏移量,假设每分钟恰好有60秒。 seconds秒不表示为已存储时间戳的一部分。

查询CURRENT_TIMESTAMP()时,时区偏移量也为零,从而明确表示它处于UTC。因此,这是基于此的UTC时间戳。

使用它可能会出现问题,因为它不在UTC中存储任何内容,并且它并不关心leap秒。规范说:

  

Le秒仅可通过测量实际时间的功能来观察。在这些功能中,如果有a秒,则有可能跳过或重复时间戳秒。

因此,如果需要这些leap秒,可能需要在特定时区使用另一种数据类型来处理leap秒。

还说明了转换:

  

如果您输入的值在秒字段中使用“:60”表示a秒,则在转换为时间戳值时不会保留该leap秒。取而代之的是,该值将在下一分钟的秒字段中解释为带有“:00”的时间戳。