BigQuery 解析超过微秒的日期时间

问题描述 投票:0回答:2

因此,在 BigQuery SQL 中,以下语句有效:

SELECT TIMESTAMP("2023-07-20T12:32:36.238140Z")

然而,这个却没有:

SELECT TIMESTAMP("2023-07-20T12:32:36.238140463Z")

它产生“无效时间戳:'2023-07-20T12:32:36.238140463Z'”

标准 BigQuery SQL TIMESTAMP 函数似乎无法解析超过微秒的日期时间。

是否有最佳实践或其他优雅的方法来处理这个问题? 我可以考虑编写自己的解析器,但这似乎有点矫枉过正......

sql google-bigquery datetime-format
2个回答
0
投票

对于微秒,你必须这样做,然后它就会正常工作:

SELECT TIMESTAMP("2023-07-20T12:32:36.238140Z") => produces => 2023-07-20 12:32:36.238140 UTC

(您的样本中有多余的数字,因此您的样本不起作用)

如果您想从上面提取微秒,这将起作用:

 SELECT extract(microsecond from TIMESTAMP("2023-07-20T12:32:36.238140Z")) => produces => 238140

0
投票

显然在 BQ 中,你不能走几分之一微秒。所以这就是为什么。我认为你必须创建自己的解析器,但可以使用 parse_timestamp 方法来创建你自己的自定义规则

WITH input AS (SELECT "2023-07-20T12:32:36.238140463Z" AS timestampStr)

SELECT
  timestampStr,
  PARSE_TIMESTAMP('%Y-%m-%dT%H:%M:%E*S%E3*Z', timestamp_str) AS parsedTimestamp
FROM input;
© www.soinside.com 2019 - 2024. All rights reserved.