Bigquery 中的错误日期格式从字符串更改为日期

Posted

技术标签:

【中文标题】Bigquery 中的错误日期格式从字符串更改为日期【英文标题】:Bad date format change from string to date in Bigquery 【发布时间】:2021-07-12 16:44:21 【问题描述】:

一直在努力处理我想使用的一些日期格式有问题的数据集。 Bigquery 无法加载文件并返回以下错误:

无法将“4/12/2016 2:47:30 AM”解析为字段日期(位置 1)的 TIMESTAMP,从位置 21 开始,并显示消息“时区无效: 上午'

我已经能够手动上传文件但作为字符串,现在想将字段设置回正确的格式,但是,我找不到将日期列的格式从字符串更改为的方法正确的日期时间格式。

很想知道这是否可行,因为文件太长而无法在 excel 或表格中格式化(就像我对这个数据集中的较小文件所做的那样)。

【问题讨论】:

【参考方案1】:

现在想将字段设置回正确的格式...从字符串到正确的 DateTime 格式

使用parse_datetime('%m/%d/%Y %r', string_col)从字符串中解析日期时间

如果应用于您问题中的示例字符串 - 您得到了

【讨论】:

【参考方案2】:

正如@Mikhail Berlyant 所说,使用parse_datetime('%m/%d/%Y %r', string_col)

函数会将格式错误的日期转换为Google Bigquery 接受的 ISO 8601 标准格式。最好的选择是将这些查询结果保存到 Bigquery 项目中数据库的新表中。

我遇到了类似的问题。 下面是我上传的表格图片,其中所有列均采用 String 格式

接下来是我将以下设置应用于下面的查询

以下设置将查询输出存储到同一数据集上名为 heartrateSeconds_clean 的新表中

Write if empty 选项是避免覆盖现有原始数据或随意将输出写入临时表的好选择,除非您确定要这样做。 保存设置继续运行您的查询

如下所示,新表的输出模式会自动更新

下面是结果表的新预览

注意:我没有对结果应用ORDER BY 子句,因此数据没有按同一个表的两个版本中的任何特定列排序。 该数据集有超过 200 万行。

【讨论】:

以上是关于Bigquery 中的错误日期格式从字符串更改为日期的主要内容,如果未能解决你的问题,请参考以下文章

如何从数组更改日期格式

BigQuery 将 RFC 1123 日期格式字符串转换为 unixtime

想在AngularJS中将格式从日期时间更改为日期

BigQuery:如何将我的一列的类型从 INTEGER 更改为 STRING?

如何将日期格式从对象的猫鼬数组更改为 ejs 视图上的字符串?

如何在 Amazon Redshift 中将列从字符串更改为日期?