[英]BigQuery - convert String to Timestamp with default value
在 BigQuery 中,我有包含时间戳数据的String
列。 在查询中,我想将其转换为Timestamp
列。
我知道,BigQuery 具有PARSE_TIMESTAMP
和TIMESTAMP
函数。 问题是,此数据来自外部源,因此我需要为输入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.