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

SQL查询中年份硬编码的自动化更新需求

解决SQL硬编码年份自动更新的问题

要实现无需手动修改年份列表、自动纳入2019年及之后所有存在的年份(包括当前年份及后续已入库的年份),可以把硬编码的IN列表替换为年份范围条件,利用数据库内置的当前日期函数动态获取年份。

通用思路

将WHERE MCAL_YEAR IN (2019,2020,...)替换为基于范围的条件,核心逻辑:

  • 固定起始年份为2019
  • 动态匹配所有大于等于2019的年份(若需限制到当前年份,可添加上限)

分数据库实现代码

MySQL/MariaDB

SELECT DISTINCT
    PROPHIX_TIME, W_EXCH_RATE_YTD_ME_AVG_G.*, 'EUR' TO_CUR
FROM 
    W_MCAL_DAY_D
INNER JOIN 
    W_EXCH_RATE_YTD_ME_AVG_G ON MCAL_PERIOD = PD
WHERE 
    MCAL_YEAR >= 2019
    -- 若仅需包含当前及之前的年份,取消以下注释:
    -- AND MCAL_YEAR <= YEAR(CURDATE())

SQL Server

SELECT DISTINCT
    PROPHIX_TIME, W_EXCH_RATE_YTD_ME_AVG_G.*, 'EUR' TO_CUR
FROM 
    W_MCAL_DAY_D
INNER JOIN 
    W_EXCH_RATE_YTD_ME_AVG_G ON MCAL_PERIOD = PD
WHERE 
    MCAL_YEAR >= 2019
    -- 若仅需包含当前及之前的年份,取消以下注释:
    -- AND MCAL_YEAR <= YEAR(GETDATE())

Oracle

SELECT DISTINCT
    PROPHIX_TIME, W_EXCH_RATE_YTD_ME_AVG_G.*, 'EUR' TO_CUR
FROM 
    W_MCAL_DAY_D
INNER JOIN 
    W_EXCH_RATE_YTD_ME_AVG_G ON MCAL_PERIOD = PD
WHERE 
    MCAL_YEAR >= 2019
    -- 若仅需包含当前及之前的年份,取消以下注释:
    -- AND MCAL_YEAR <= EXTRACT(YEAR FROM SYSDATE)

PostgreSQL

SELECT DISTINCT
    PROPHIX_TIME, W_EXCH_RATE_YTD_ME_AVG_G.*, 'EUR' TO_CUR
FROM 
    W_MCAL_DAY_D
INNER JOIN 
    W_EXCH_RATE_YTD_ME_AVG_G ON MCAL_PERIOD = PD
WHERE 
    MCAL_YEAR >= 2019
    -- 若仅需包含当前及之前的年份,取消以下注释:
    -- AND MCAL_YEAR <= EXTRACT(YEAR FROM CURRENT_DATE)::INT

补充说明

  • 若数据库中已存在未来年份的提前入库数据(比如2025年数据),直接使用MCAL_YEAR >= 2019即可自动包含这些年份,无需额外修改。
  • 若需要严格限制仅包含当前及之前的年份,取消对应注释的上限条件即可,该条件会自动随当前日期更新年份值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:07:06