使用日期时间和时间戳的混合清理字符串列

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)   

等等...