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

如何使用SQL查询每月最后一天对应的每日数据?

需求说明

现有一张记录每日数据的表格,包含跨月的每日记录,输入数据示例如下:

DateValue
01-01-202345
02-01-2023282
..............
31-01-2023887

期望检索出每月最后一天对应的数据,输出示例如下:

DateValue
31-01-2023887

实现方案

以下针对不同主流数据库提供对应的SQL语句,假设你的表名为daily_data,日期字段为Date,数值字段为Value。

MySQL/MariaDB

使用LAST_DAY()函数直接匹配当月最后一天的记录:

SELECT Date, Value
FROM daily_data
WHERE Date = LAST_DAY(Date);

PostgreSQL

通过DATE_TRUNC()结合时间间隔计算当月最后一天:

SELECT Date, Value
FROM daily_data
WHERE Date = (DATE_TRUNC('month', Date) + INTERVAL '1 month - 1 day')::DATE;

SQL Server

使用EOMONTH()函数获取当月最后一天并筛选:

SELECT Date, Value
FROM daily_data
WHERE Date = EOMONTH(Date);

Oracle

用LAST_DAY()函数匹配目标记录:

SELECT Date, Value
FROM daily_data
WHERE Date = LAST_DAY(Date);

跨数据库兼容写法

如果需要适配多数数据库,可通过分组获取每月最大日期来关联筛选:

SELECT d.Date, d.Value
FROM daily_data d
INNER JOIN (
    SELECT TO_CHAR(Date, 'YYYY-MM') AS month_key, MAX(Date) AS last_day
    FROM daily_data
    GROUP BY month_key
) m ON d.Date = m.last_day;

注:TO_CHAR为PostgreSQL/Oracle的日期格式化函数,MySQL替换为DATE_FORMAT(Date, '%Y-%m'),SQL Server替换为FORMAT(Date, 'yyyy-MM')即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:45:00