You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从指定日期开始将BigQuery数组元素与日期逐一匹配

数组元素与连续日期匹配的SQL实现

要实现数组元素按顺序匹配从指定日期开始的连续日期,核心思路是拆分数组并获取每个元素的位置索引,再通过索引计算对应的日期偏移量。以下是主流数据库的具体实现方案:

PostgreSQL 实现

PostgreSQL原生支持数组类型,用UNNEST(... WITH ORDINALITY)可同时拆分数组并得到元素的位置序号(从1开始),再通过日期偏移计算匹配日期:

SELECT 
    elem AS number,
    start_date + (pos - 1) * INTERVAL '1 day' AS match_date
FROM 
    (SELECT [1, 2, 3] AS numbers, CAST('2022-01-01' AS DATE) AS start_date) t,
    UNNEST(t.numbers) WITH ORDINALITY AS u(elem, pos);

执行结果:

numbermatch_date
12022-01-01
22022-01-02
32022-01-03

MySQL 8.0+ 实现

MySQL可通过JSON_TABLE解析数组(需将数组转为JSON格式),获取元素和索引后用DATE_ADD计算对应日期:

SELECT 
    j.number,
    DATE_ADD(t.start_date, INTERVAL (j.pos - 1) DAY) AS match_date
FROM 
    (SELECT JSON_ARRAY(1,2,3) AS numbers, CAST('2022-01-01' AS DATE) AS start_date) t,
    JSON_TABLE(
        t.numbers,
        '$[*]' COLUMNS(
            number INT PATH '$',
            pos INT FOR ORDINALITY
        )
    ) j;

SQL Server 实现

SQL Server用OPENJSON解析数组,通过key字段获取元素的索引(从0开始),直接用索引值计算日期偏移:

SELECT 
    CAST(value AS INT) AS number,
    DATEADD(DAY, CAST([key] AS INT), start_date) AS match_date
FROM 
    (SELECT '[1,2,3]' AS numbers, CAST('2022-01-01' AS DATE) AS start_date) t
    CROSS APPLY OPENJSON(t.numbers);

内容的提问来源于stack exchange,提问作者hazalciplak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 09:23:06