使用日期时间和时间戳的混合清理字符串列
Sanitize a string column with a mix of datetime and timestamps
我在 BigQuery 上有一个字符串数据类型的列,其中混合了日期和时间戳作为字符串。
https://www.evernote.com/l/AmOc0thoaMRLJ7y1IFnLMxwLAeREujUtGRc
已尝试 SAFE_CAST、DATE_PARSE,但均无效。
我希望能够统一查询这个列作为时间戳。
I want to be able to query this column uniformly as timestamps.
以下是 BigQuery 标准的示例 SQL
#standardSQL
SELECT close_date,
COALESCE(
TIMESTAMP_MILLIS(SAFE_CAST(close_date AS INT64)),
SAFE.PARSE_TIMESTAMP('%m/%d/%y', close_date)
) AS close_date_as_timestamp
FROM `project.dataset.table`
如果应用于您的样本数据 - 结果是
Row close_date close_date_as_timestamp
1 1556064000000 2019-04-24 00:00:00 UTC
2 01/24/19 2019-01-24 00:00:00 UTC
3 1548892800000 2019-01-31 00:00:00 UTC
4 11/27/18 2018-11-27 00:00:00 UTC
注意:您可以在 COALESCE 中添加您希望在数据中添加的不同模式
例如,您可以在下面添加以支持 2019-01-01
SAFE.PARSE_TIMESTAMP('%Y-%m-%d', close_date)
等等...
我在 BigQuery 上有一个字符串数据类型的列,其中混合了日期和时间戳作为字符串。 https://www.evernote.com/l/AmOc0thoaMRLJ7y1IFnLMxwLAeREujUtGRc
已尝试 SAFE_CAST、DATE_PARSE,但均无效。
我希望能够统一查询这个列作为时间戳。
I want to be able to query this column uniformly as timestamps.
以下是 BigQuery 标准的示例 SQL
#standardSQL
SELECT close_date,
COALESCE(
TIMESTAMP_MILLIS(SAFE_CAST(close_date AS INT64)),
SAFE.PARSE_TIMESTAMP('%m/%d/%y', close_date)
) AS close_date_as_timestamp
FROM `project.dataset.table`
如果应用于您的样本数据 - 结果是
Row close_date close_date_as_timestamp
1 1556064000000 2019-04-24 00:00:00 UTC
2 01/24/19 2019-01-24 00:00:00 UTC
3 1548892800000 2019-01-31 00:00:00 UTC
4 11/27/18 2018-11-27 00:00:00 UTC
注意:您可以在 COALESCE 中添加您希望在数据中添加的不同模式
例如,您可以在下面添加以支持 2019-01-01
SAFE.PARSE_TIMESTAMP('%Y-%m-%d', close_date)
等等...