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

如何在SQL Server中计算用户唯一工作日期的天数总和?

计算SQL Server中用户的唯一工作天数

要实现统计用户唯一日期的工作天数总和,核心思路是提取日期的纯日期部分(忽略时间),然后按用户分组统计唯一日期的数量。下面分两种常见情况给出解决方案:

情况1:Date字段是datetime/datetime2类型

如果你的Date字段是SQL Server的日期时间类型,直接用CAST转换为DATE类型(仅保留年月日),再结合COUNT(DISTINCT)统计唯一值即可:

SELECT 
    UserID,
    COUNT(DISTINCT CAST(Date AS DATE)) AS TotalDays
FROM 
    YourTableName -- 替换成你的实际表名
GROUP BY 
    UserID;

代码解释:

  • CAST(Date AS DATE):把带时间戳的日期转换为纯日期格式,同一天的不同时间记录会被统一识别为同一个日期。
  • COUNT(DISTINCT ...):确保只统计每个用户的唯一日期数量,避免重复计数。
  • GROUP BY UserID:按用户ID分组,每个用户单独计算工作天数。

如果只需要查询特定用户(比如UserID=1),可以加上WHERE条件缩小范围:

SELECT 
    UserID,
    COUNT(DISTINCT CAST(Date AS DATE)) AS TotalDays
FROM 
    YourTableName
WHERE 
    UserID = 1
GROUP BY 
    UserID;

情况2:Date字段是字符串类型

如果你的Date字段是字符串格式(比如例子中的04.06.2018 10:45:11),需要先把字符串转换为DATE类型,这里用CONVERT函数并指定对应格式代码:

SELECT 
    UserID,
    COUNT(DISTINCT CONVERT(DATE, Date, 104)) AS TotalDays -- 104对应dd.mm.yyyy格式
FROM 
    YourTableName
GROUP BY 
    UserID;

格式代码说明:

SQL Server中104是对应dd.mm.yyyy格式的代码,如果你的日期字符串是其他格式(比如mm/dd/yyyy),需要替换为对应的格式代码(比如101)。

测试结果

用你提供的测试数据:

UserIDDate
104.06.2018 10:45:11
104.06.2018 17:15:11
105.06.2018 09:15:33

执行上述查询后,会得到期望的结果:

UserIDTotalDays
12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:41:19