java - 从 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 中的时间戳?
解决方案
对于任何试图在 BigQuery 中解析 ISO 8601 的人(这篇文章是谷歌的第一个结果),试试这个:
SELECT
PARSE_TIMESTAMP('%Y-%m-%dT%H:%M:%E*SZ', '2018-10-12T13:22:27.120Z')
推荐阅读
- android - Gson.toJson() 在传递 Intent 时抛出 StackOverflowError
- swift - 如何将 SwiftUI 连接到 macOS 基于文档的应用程序中的文档?
- regex - 不区分大小写的单词边界
- r - R中的多次收集以创建整洁的数据集
- .net-core - 从 VS 2019 CE 到 Raspberry PI 的 .net core 3.1 远程调试 - 当应用程序想要处理 GPIO 中断时,vsdbg 退出
- java - JFrame 总是稍微向右
- python - 如何将 NetworkX 中的加权有向图变成马尔可夫链
- elasticsearch - ES7 - 如何建模 1-n 父子关系 - 不同的 ES 类型
- nginx - Nginx 从“www”重定向到“non www”以及从“http”到“https”?
- elasticsearch - 模拟弹性搜索嵌套桶