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

SQL如何计算efdt字段前一日日期作为PreviousDay列结果

计算PreviousDay列的实现方案

核心要求:PreviousDay列返回efdt字段存储日期的前1个自然日,例:efdt值为2001-04-02时,PreviousDay返回2001-04-01,与示例中DATEDIFF计算值334的计算基准对齐。

不同数据库的具体实现写法如下:

  • MySQL / MariaDB
    调用内置日期偏移函数即可,支持自动处理跨月、跨年、闰年的日期计算:
    SELECT
      *,
      DATE_SUB(efdt, INTERVAL 1 DAY) AS PreviousDay
    FROM 你的表名;
    
    也可以直接用简化算术写法:efdt - INTERVAL 1 DAY AS PreviousDay,返回结果完全一致。
  • SQL Server
    使用DATEADD函数做日维度偏移:
    SELECT
      *,
      DATEADD(DAY, -1, efdt) AS PreviousDay
    FROM 你的表名;
    
  • PostgreSQL
    支持日期类型直接做算术运算,若需要返回纯日期格式(不带时分秒)可以加类型转换:
    SELECT
      *,
      (efdt - 1)::DATE AS PreviousDay
    FROM 你的表名;
    
  • Oracle
    日期类型直接减数值1即为往前推1天:
    SELECT
      t.*,
      efdt - 1 AS PreviousDay
    FROM 你的表名 t;
    

校验提示:以上写法均会自动处理特殊日期的偏移逻辑,无需手动判断当月天数,例如2024-01-01偏移1天会返回2023-12-31,2024-03-01偏移1天会返回2024-02-29,符合自然日计算规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:15:47