【发布时间】:2020-08-05 07:45:30
【问题描述】:
我的数据集中有日期字符串列,该日期字符串列的日期值格式如下所示
某些日期的格式为:2020-04-22 和 一些日期的格式为:04/22/2020
请建议如何将这些日期值解析为时间戳格式:2020-04-22 00:00:00 UTC
谢谢!
【问题讨论】:
标签: sql date select google-bigquery
我的数据集中有日期字符串列,该日期字符串列的日期值格式如下所示
某些日期的格式为:2020-04-22 和 一些日期的格式为:04/22/2020
请建议如何将这些日期值解析为时间戳格式:2020-04-22 00:00:00 UTC
谢谢!
【问题讨论】:
标签: sql date select google-bigquery
您需要标准化两个日期。 尝试使用:
SELECT
COALESCE(SAFE.PARSE_DATE('%F', your_date_field), SAFE.PARSE_DATE('%m/%d/%Y', your_date_field)) AS your_new_date_field
FROM ...
【讨论】:
如果所有字符串都严格符合一种格式或另一种格式,则可以进行条件逻辑:
PARSE_TIMESTAMP(
CASE
WHEN REGEXP_CONTAINS(mydate, r"^\d{4}-\d{2}-\d{2}$" THEN "%F"
WHEN REGEXP_CONTAINS(mydate, r"^\d{2}/\d{2}/\d{4}$" THEN "%m/%d/%Y"
END,
mydate
)
您可能希望使用SAFE.PARSE_TIMESTAMP() 而不是PARSE_TIMESTAMP() 来防止不匹配格式的转换失败。
【讨论】: