如何将字符串日期列转换为 Google 大查询中的日期列?
Posted
技术标签:
【中文标题】如何将字符串日期列转换为 Google 大查询中的日期列?【英文标题】:How to convert a string date column to a date column in Google big Query? 【发布时间】:2019-03-20 17:34:28 【问题描述】:我在互联网上搜索了很多堆栈溢出,但没有找到满意的答案。
我正在尝试将表格中的字符串日期列(如下所示)转换为日期列格式:
日期:
20190303
20190304
20190305
20190306
进入
日期:
2019/03/03
2019/03/04
2019/03/04
2019/03/05
2019 年 3 月 6 日。
我尝试了以下查询:
SELECT cast(concat(SUBSTR(date,0,4),'/',SUBSTR(date,5,2),'/',SUBSTR(date,7,2))) as date
FROM `tfa-big-query.74006564.ga_sessions_*`
LIMIT 10
它给我一个错误:“无效日期:'2019/03/03”
我认为我应该在 GBQ 中使用 PARSE_DATE 进行转换,但我无法这样做。
提前致谢。
【问题讨论】:
你试过用日期功能吗,这类问题的很多答案都可以在here 【参考方案1】:以下是 BigQuery 标准 SQL
#standardSQL
SELECT date_as_yyymmdd,
PARSE_DATE('%Y%m%d', date_as_yyymmdd) AS date_as_date
FROM `project.dataset.table`
您可以使用您问题中的示例数据对其进行测试,如下例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT '20190303' date_as_yyymmdd UNION ALL
SELECT '20190304' UNION ALL
SELECT '20190305' UNION ALL
SELECT '20190306'
)
SELECT date_as_yyymmdd,
PARSE_DATE('%Y%m%d', date_as_yyymmdd) AS date_as_date
FROM `project.dataset.table`
结果为
Row date_as_yyymmdd date_as_date
1 20190303 2019-03-03
2 20190304 2019-03-04
3 20190305 2019-03-05
4 20190306 2019-03-06
注意:2019/03/03
不是 BigQuery 中 DATE 类型的正确表示 - 因此您会看到错误 - "Invalid date: '2019/03/03"
但如果出于某种原因您需要该格式 - 您可以添加 FORMAT_DATE()
到组合中,如下例所示
FORMAT_DATE('%Y/%m/%d', PARSE_DATE('%Y%m%d', date_as_yyymmdd))
【讨论】:
那么,我们必须在这里创建另一个列,对吧?我们可以对现有的“日期”列执行此操作吗? 如果你想用另一个字符串值更新字符串列 - 你可以使用 UPDATE。如果您对此还有其他问题 - 请发布包含所有相关详细信息的新问题以上是关于如何将字符串日期列转换为 Google 大查询中的日期列?的主要内容,如果未能解决你的问题,请参考以下文章
如何将Google Visualization API的日期列转换为JSON格式