datetime - 如何在 BigQuery SQL 中捕获失败的 CAST 语句?

标签 datetime casting google-bigquery

我们正在使用 BigQuery 的非遗留 SQL 将 STRING 字段转换为 DATETIME 字段。

DATETIME 字段被诸如“None”和“0.0”之类的值损坏,这会导致我们的 CAST 语句失败。

我们看到,对于其他类型的 SQL,有 TRY-CATCH 函数和 ISNUMERIC() 测试——BigQuery 似乎不支持这两种测试。

这是一个捕获“无”但未能捕获随机浮点数或整数的示例:

CASE 
 WHEN UPDT_DT_TM LIKE 'None' THEN NULL
 ELSE CAST(UPDT_DT_TM AS DATETIME) 
END AS UPDT_DT_TM,

除了 BigQuery 中的用户定义函数 (UDF) - 是否还有其他方法可以创建 CASE 语句,该语句可以在可以转换为 DATETIME 的情况下转换为 DATETIME,否则只会将该值保留为 NULL?

最佳答案

您可以使用 SAFE_CAST函数,如果在解释为所需类型时输入不是有效值,则返回 NULL。在您的情况下,您只需使用 SAFE_CAST(UPDT_DT_TM AS DATETIME) .它在 Functions & Operators documentation .

关于datetime - 如何在 BigQuery SQL 中捕获失败的 CAST 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48069173/

相关文章:

c# - 将 IList<T> 转换为 BindingList<T>

java - 向下转换对象的时间复杂度是多少?

sql - 一个项目中允许的最大数据集数

vb.net - 日期格式问题

c# - 现在和下一个小时之间的时间跨度?

python - 在Python中使用groupby计算平均差异

list - 类型 'List<Map<Object, Object>>'不是类型转换中的 'List<Map<String, Object>>'类型的子类型

python - google-cloud 依赖项在 python 应用程序引擎中被覆盖

ssl - "bq"命令行工具抛出 CERTIFICATE_VERIFY_FAILED

python - 如何获取正确格式的日期以供 YouTube 上传?