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

技术求助:基于DATE_REQUEST列的去年同期365天时间过滤调整

调整SQL日期过滤条件以获取指定时间段数据

针对你的需求——筛选UTC时区TIMESTAMP类型的DATE_REQUEST列,获取2021-04-20 至 2022-04-19之间的数据(对应当前日期2023-04-20时,去年今日之前365天的范围),以下是调整后的SQL语句,核心修改WHERE子句的日期过滤逻辑:

SELECT 
    FLIGHT_MONTH,
    IATA_OD,
    SERV_DEP_COUNTRY,
    SERV_ARR_COUNTRY,
    SUM(max_quantity) AS PAX, 
    SUM(sum_price) AS FPPRICE
FROM (
    SELECT
        DATE_TRUNC(DATE(t.DATE_DEPARTURE), MONTH) AS FLIGHT_MONTH,
        t.id_pnr AS PNR,
        CONCAT(t.IATA_CODE_SERVICE_DEP_CITY, "-", t.IATA_CODE_SERVICE_ARR_CITY) AS IATA_OD,
        t.DESC_SERVICE_DEP_COUNT AS SERV_DEP_COUNTRY,
        t.DESC_SERVICE_ARR_COUNT AS SERV_ARR_COUNTRY,
        MAX(t.ID_PAX_RANGE) max_quantity,
        SUM(t.FLIGHTPROVIDERPRICE) sum_price
    FROM `DATA_TABLE` t
    WHERE 
        -- 筛选UTC时间在2021-04-20 00:00:00 至 2022-04-19 23:59:59之间的数据
        DATE_REQUEST >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 YEAR)
        AND DATE_REQUEST < TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 YEAR)
    GROUP BY FLIGHT_MONTH, PNR, IATA_OD, SERV_DEP_COUNTRY, SERV_ARR_COUNTRY
) t
GROUP BY FLIGHT_MONTH, IATA_OD, SERV_DEP_COUNTRY, SERV_ARR_COUNTRY
ORDER BY FLIGHT_MONTH, IATA_OD, SERV_DEP_COUNTRY, SERV_ARR_COUNTRY

过滤逻辑说明

  • TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 YEAR):基于当前UTC时间往前推2年,得到时间段的起始点(2021-04-20 00:00:00 UTC)。
  • DATE_REQUEST < TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 YEAR):基于当前UTC时间往前推1年(2022-04-20 00:00:00 UTC),用小于这个时间点的条件,确保只包含到2022-04-19的最后一秒数据,避免误纳入2022-04-20的记录。

如果更倾向于基于日期而非时间戳的直观比较,也可以将DATE_REQUEST转换为UTC日期后筛选:

WHERE 
    DATE(DATE_REQUEST) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 2 YEAR) 
    AND DATE_SUB(CURRENT_DATE(), INTERVAL 1 YEAR + 1 DAY)

这个写法会直接匹配2021-04-20至2022-04-19的所有日期,与需求完全对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:33:22