繁体   English   中英

BigQuery - 使用默认值将字符串转换为时间戳

[英]BigQuery - convert String to Timestamp with default value

在 BigQuery 中,我有包含时间戳数据的String列。 在查询中,我想将其转换为Timestamp列。
我知道,BigQuery 具有PARSE_TIMESTAMPTIMESTAMP函数。 问题是,此数据来自外部源,因此我需要为输入String可能不是正确时间戳的可能性做好准备。
在查询中使用这些函数时,如果输入数据格式错误,查询将失败。
有没有一种方法可以让这个查询即使输入数据错误也能通过? 例如,将不正确的格式更改为null或一些任意时间戳,如1900-01-01 00:00:00
简单的正则表达式检查是不够的。 例如2020-02-29 00:00:00是一个完全正确的时间戳,但2019-02-29 00:00:00是不正确的。

您需要使用 SAFE 作为前缀,以便为无效数据获取 NULL。

SELECT safe.timestamp('2019-02-29 00:00:00') as tt

回报

[
  {
    "tt": null
  }
]

如果您使用 SAFE 开始一项功能。 前缀,它将返回 NULL 而不是错误。 外管局。 prefix 仅防止前缀函数本身的错误:它不会防止在评估参数表达式时发生的错误。 外管局。 prefix 仅防止由于函数输入的值而发生的错误,例如“value out of range”错误; 其他错误,例如内部或系统错误,可能仍会发生。 如果函数没有返回错误,SAFE。 对输出没有影响。 如果函数从不返回错误,如 RAND,则为 SAFE。 没有效果。

https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#safe_prefix

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM