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

SQL中实现每周自动获取近60天最新数据的动态日期语法咨询

SQL中实现每周自动获取近60天最新数据的动态日期语法咨询

嗨,我明白你的困扰啦——用固定日期的话,每周跑查询只会拿到同一个时间段的数据,根本没法自动更新到最新的60天区间对吧?别担心,咱们用动态日期函数就能解决这个问题,不同数据库的写法略有差异,我给你分情况说明:

核心思路

不要写死起始和结束日期的字符串,而是用数据库自带的日期函数动态计算区间:起始日期为「最新日期往前推60天」,结束日期为「最新可用日期」(一般是当前系统日期,或者你表中最新的记录日期)。


不同数据库的具体写法

1. MySQL/MariaDB

  • 如果结束日期取当前系统日期:
WHERE date_dd BETWEEN DATE_SUB(CURDATE(), INTERVAL 60 DAY) AND CURDATE()
  • 如果结束日期取表中date_dd字段的最新值(比如表中数据更新滞后于系统日期):
WHERE date_dd BETWEEN DATE_SUB((SELECT MAX(date_dd) FROM your_table), INTERVAL 60 DAY) 
                  AND (SELECT MAX(date_dd) FROM your_table)

2. PostgreSQL

  • 如果结束日期取当前系统日期:
WHERE date_dd BETWEEN CURRENT_DATE - INTERVAL '60 days' AND CURRENT_DATE
  • 如果结束日期取表中date_dd字段的最新值:
WHERE date_dd BETWEEN (SELECT MAX(date_dd) FROM your_table) - INTERVAL '60 days' 
                  AND (SELECT MAX(date_dd) FROM your_table)

3. SQL Server

  • 如果结束日期取当前系统日期(注意:GETDATE()会返回带时间的datetime,若date_dd是纯日期类型,建议转成DATE避免时间过滤问题):
-- 带时间的写法
WHERE date_dd BETWEEN DATEADD(day, -60, GETDATE()) AND GETDATE()

-- 纯日期的写法(更精准)
WHERE date_dd BETWEEN DATEADD(day, -60, CAST(GETDATE() AS DATE)) 
                  AND CAST(GETDATE() AS DATE)
  • 如果结束日期取表中date_dd字段的最新值:
WHERE date_dd BETWEEN DATEADD(day, -60, (SELECT MAX(date_dd) FROM your_table)) 
                  AND (SELECT MAX(date_dd) FROM your_table)

小提示

如果你不确定自己用的是哪种数据库,可以先试试通用的逻辑:用「当前日期/最新记录日期 - 60天」作为起始条件,这样每周执行查询时,区间都会自动更新,拿到的永远是最近60天的最新数据~

备注:内容来源于stack exchange,提问作者Aita525

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 11:44:11