首页 > 解决方案 > 从 ISO 8601 日期字符串转换为 BigQuery 时间戳时出错

问题描述

我有一个 ISO 8601 日期字符串,格式如下:

String myIsoDateString = "2019-02-27T23:00:00.000Z"

我需要将日期字符串用作我在 BigQuery 中运行的查询的一部分。我正在尝试使用com.google.cloud.bigquery.QueryParameterValue该类将其转换为QueryParameterValue,类型为timestamp,如下所示:

QueryParameterValue.timestamp(myIsoDateString)

这给了我一个错误:

java.lang.IllegalArgumentException: Invalid format: "2019-02-27T23:00:00.000Z" is malformed at "T23:00:00.000Z"

Eclipse 中时间戳方法的内联帮助指出:

Creates a QueryParameterValue object with a type of TIMESTAMP. Must be in the format"yyyy-MM-dd HH:mm:ss.SSSSSSZZ", e.g. "2014-08-19 12:41:35.220000+00:00".

如何转换myIsoDateString为所需的格式?有没有更好的方法可以处理从 ISO 8601 字符串转换为 BigQuery 中的时间戳?

标签: javadatedatetimegoogle-bigqueryiso8601

解决方案


对于任何试图在 BigQuery 中解析 ISO 8601 的人(这篇文章是谷歌的第一个结果),试试这个:

SELECT
PARSE_TIMESTAMP('%Y-%m-%dT%H:%M:%E*SZ',  '2018-10-12T13:22:27.120Z')

推荐阅读