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

如何用SQL筛选DATE列值为每月第一天的数据库数据?

筛选每月第一天数据的SQL写法

核心需求

从data_table表中,筛选出date_column列值为每月第一天、且日期在1990-01-01至2023-12-31之间的所有数据。

不同数据库的具体写法

以下是几种主流关系型数据库的简单实现,你可以根据自己使用的数据库选择对应语句:

  • MySQL / MariaDB
    直接判断日期的日部分是否为01,同时限定日期范围:

    SELECT * FROM data_table
    WHERE DATE_FORMAT(date_column, '%d') = '01'
      AND date_column BETWEEN '1990-01-01' AND '2023-12-31';
    

    更严谨的写法(避免格式匹配潜在问题):

    SELECT * FROM data_table
    WHERE date_column = DATE_SUB(date_column, INTERVAL DAYOFMONTH(date_column)-1 DAY)
      AND date_column BETWEEN '1990-01-01' AND '2023-12-31';
    
  • PostgreSQL
    通过截断日期到月份,得到当月第一天后对比:

    SELECT * FROM data_table
    WHERE date_column = DATE_TRUNC('month', date_column)::DATE
      AND date_column BETWEEN '1990-01-01' AND '2023-12-31';
    
  • SQL Server
    用日期偏移计算得到当月第一天:

    SELECT * FROM data_table
    WHERE date_column = DATEADD(month, DATEDIFF(month, 0, date_column), 0)
      AND date_column BETWEEN '1990-01-01' AND '2023-12-31';
    
  • Oracle
    截断日期到月份维度:

    SELECT * FROM data_table
    WHERE date_column = TRUNC(date_column, 'MM')
      AND date_column BETWEEN TO_DATE('1990-01-01', 'YYYY-MM-DD') AND TO_DATE('2023-12-31', 'YYYY-MM-DD');
    

额外提示

添加日期范围筛选能减少大表的查询数据量,提升查询效率;如果不确定数据库类型,可以先尝试MySQL的第一种写法,多数数据库支持类似的日期格式化逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:03:04