【问题标题】:SQL BigQuery - How to convert date(2020-11-14 16:04:15 UTC) to WEEKDAY value (0-6)SQL BigQuery - 如何将日期(2020-11-14 16:04:15 UTC)转换为 WEEKDAY 值(0-6)
【发布时间】:2021-12-02 11:20:46
【问题描述】:

我目前正在解决这个问题。这是一些相关的documentation

我有一个 { 2020-11-14 16:04:15 UTC } 格式的时间日期列。我想得到一个对应于星期几的整数 1-7 的列。 1 = 星期日,7 = 星期六。

目前,我有这个适用于特定日期。

SELECT EXTRACT(DAYOFWEEK FROM DATE '2013-12-25') AS the_day

如何将这个函数应用到整列?

感谢您的帮助。

SQL BigQuery

【问题讨论】:

    标签: sql datetime google-bigquery weekday


    【解决方案1】:

    下面是例子。

    WITH
    org_table AS (
        SELECT DATE('2013-12-25') as org_col
        UNION ALL SELECT '2013-12-26'
        UNION ALL SELECT '2013-12-28'
        UNION ALL SELECT '2013-12-29'
    )
    SELECT
      org_col,
      EXTRACT(DAYOFWEEK FROM org_col) AS the_day
    FROM org_table
    ORDER BY org_col
    ;
    

    附言 要应用现有查询,请替换 org_table。

    WITH
    org_table AS (
        SELECT `your_column` as org_col
        FROM `your_table`
    )
    ...
    

    【讨论】:

    • 您好,我不确定如何应用此解决方案。对于 UNION ALL SELECT 之后的日期,我需要手动输入每个相关日期吗?
    • 不,上面只是一个例子。您可以将org_table 子查询替换为您自己的表。
    • 谢谢,这成功了。你知道在文档中引用以 WITH 开头的第一部分是什么吗?我希望尝试更好地了解我的所作所为。
    • 您是说这个WITH clause 文档吗?
    【解决方案2】:

    改编自日期函数“提取”示例 2 的文档。 https://cloud.google.com/bigquery/docs/reference/standard-sql/date_functions?hl=ar-YE#extract

    SELECT
      date,
      EXTRACT(DAYOFWEEK FROM date) AS the_day
    FROM UNNEST(GENERATE_DATE_ARRAY('2015-12-23', '2016-01-09')) AS date
    ORDER BY date;
    

    【讨论】:

    • 您好,我正在尝试应用此解决方案,但遇到了一些问题。我的问题并不清楚,但是日期列不是连续的,因此使用 generate_date_array 不会准确反映列中的数据。你知道是否有办法使用 ARRAY_AGG() 函数从日期时间列创建一个新数组。 cloud.google.com/bigquery/docs/reference/standard-sql/…> 和 cloud.google.com/bigquery/docs/reference/standard-sql/…> 是相关文档的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 2012-01-16
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    相关资源
    最近更新 更多