【问题标题】:I would like to extract the month and day from a date我想从日期中提取月份和日期
【发布时间】:2021-01-07 16:02:27
【问题描述】:

我的代码

SELECT 
    PARSE_DATE('%Y%m%d', CAST(date AS STRING)) AS date, 
    EXTRACT(DAY from date) AS day_of_month,
    EXTRACT(MONTH from date) AS week_of_year,  
    channelGrouping, deviceCategory, sessions, conversions, 

我想将列中的日期(格式为 20170101)转换为 2017-01-01。

然后我想从中提取月份和日期。但是我不断收到错误消息:

参数类型的函数 EXTRACT 没有匹配的签名:DATE_TIME_PART FROM INT64。支持的签名:EXTRACT(DATE_TIME_PART FROM DATE); EXTRACT(DATE_TIME_PART FROM TIMESTAMP [AT TIME ZONE STRING]);提取(DATE_TIME_PART FROM DATETIME); [1:60] 提取(DATE_TIME_PART FROM TIME)

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    BigQuery 标准 SQL 的以下几个选项 - 避免多次预解析

    选项 1

    SELECT 
      date, 
      EXTRACT(DAY FROM date) AS day_of_month,
      EXTRACT(WEEK FROM date) AS week_of_year,  
      channelGrouping, deviceCategory, sessions, conversions, 
    FROM `project.dataset.table`, 
    UNNEST([PARSE_DATE('%Y%m%d', CAST(date AS STRING))]) date    
    

    选项 2

    SELECT 
      date, 
      EXTRACT(DAY FROM date) AS day_of_month,
      EXTRACT(WEEK FROM date) AS week_of_year,  
      channelGrouping, deviceCategory, sessions, conversions, 
    FROM (
      SELECT * REPLACE(PARSE_DATE('%Y%m%d', CAST(date AS STRING)) AS date)  
      FROM `project.dataset.table`
    )
    

    【讨论】:

      【解决方案2】:

      你需要重新解析每个extract()的日期:

      SELECT PARSE_DATE('%Y%m%d', CAST(date AS STRING)) as date,
             EXTRACT(DAY from PARSE_DATE('%Y%m%d',
             EXTRACT(MONTH from PARSE_DATE('%Y%m%d', CAST(date AS STRING))) as week_of_year,
             channelGrouping, deviceCategory, sessions, conversions,
      

      但是,如果date 已经是 YYYYMMDD 格式的数字,为什么不直接使用算术函数:

      select mod(date, 100) as day,
             mod(floor(date / 100), 100) as month
      

      【讨论】:

        猜你喜欢
        • 2019-03-20
        • 2019-01-07
        • 1970-01-01
        • 1970-01-01
        • 2020-10-24
        • 2021-10-02
        • 2018-02-16
        • 1970-01-01
        相关资源
        最近更新 更多