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

如何针对日期时间列的日期部分统计去重计数?

解决方法:统计日期字段的唯一日期数量

核心思路是先把带时间戳的日期字段转换为纯日期格式,再对纯日期去重后统计。不同数据库的转换函数不同,以下是常用数据库的写法:

MySQL/MariaDB

使用DATE()函数提取日期部分:

SELECT 
    xyz.ID,
    COUNT(DISTINCT DATE(xyz.RECEIVEDATE)) AS CountOfUniqueDates
FROM xyz
GROUP BY xyz.ID;

SQL Server

通过CAST或CONVERT将字段转为DATE类型:

SELECT 
    xyz.ID,
    COUNT(DISTINCT CAST(xyz.RECEIVEDATE AS DATE)) AS CountOfUniqueDates
FROM xyz
GROUP BY xyz.ID;

或者用CONVERT语法:

SELECT 
    xyz.ID,
    COUNT(DISTINCT CONVERT(DATE, xyz.RECEIVEDATE)) AS CountOfUniqueDates
FROM xyz
GROUP BY xyz.ID;

Oracle

用TRUNC()函数截断时间部分,仅保留日期:

SELECT 
    xyz.ID,
    COUNT(DISTINCT TRUNC(xyz.RECEIVEDATE)) AS CountOfUniqueDates
FROM xyz
GROUP BY xyz.ID;

PostgreSQL

使用DATE()函数或CAST转换:

SELECT 
    xyz.ID,
    COUNT(DISTINCT DATE(xyz.RECEIVEDATE)) AS CountOfUniqueDates
FROM xyz
GROUP BY xyz.ID;

关键说明

原查询失效是因为直接统计了带时分秒的时间戳,同一日期的不同时间会被判定为不同记录。上述写法先剥离时间部分得到纯日期,再通过COUNT(DISTINCT ...)统计每个ID对应的唯一日期数量,就能得到你需要的结果(比如示例中的3个不同日期)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:33:14