检查特定日期 table 中的用户数

Check count of user in a table for particular date

我有 table,我想为特定用户检查 count 01/04/2016 - 17/05/2016

之间的日期

我添加了如下查询

select count(CUser_Id) from inward_doc_tracking_trl
where CSTATUS_flag = 4
and NStatus_Flag = 1
and CUser_Id = 1260

现在如何添加 date 部分并检查 ??

我正在使用SQL server 2005

只需将日期列添加到条件列表中即可:

select count(CUser_Id) from inward_doc_tracking_trl
where CSTATUS_flag = 4
and NStatus_Flag = 1
and CUser_Id = 1260
and U_datetime >= '2016-04-01' 
and U_datetime <= '2016-05-17' 

请注意,我使用了与您在问题中使用的格式不同的字符串格式来表示日期。 这样做的原因是 yyyy-MM-dd 是一个 ISO 标准,因此 sql 服务器将始终以相同的方式对待它,而格式 dd/mm/yyyy 是不明确的:
01/04/2016 代表 2016 年 4 月 1 日还是 1 月 4 日?

另一件事:我总是更喜欢使用 >=<= 而不是 between...and - 因为 between...and 包含第一个值但不包含最后一个值,所以有点令人困惑。使用 <=>= 更清晰。

使用BETWEEN在两个日期之间进行筛选:

select count(CUser_Id) from inward_doc_tracking_trl
where CSTATUS_flag = 4
  and NStatus_Flag = 1
  and CUser_Id = 1260
  and YourDateCol between '01/04/2016' and '17/05/2016'

编辑: 如果我理解你的话,你需要一个 group by 子句:

select CUser_Id,count(CUser_Id) from inward_doc_tracking_trl
where CSTATUS_flag = 4
  and NStatus_Flag = 1
  and YourDateCol between '01/04/2016' and '17/05/2016'
GROUP BY CUser_Id

在条件列表中添加 table 的日期列。

SELECT 
    COUNT(CUser_Id) 
FROM 
    inward_doc_tracking_trl
WHERE 
    CSTATUS_flag = 4
    AND NStatus_Flag = 1
    AND CUser_Id = 1260
    AND YourDateColumn BETWEEN '2016-04-01 00:00:00.000' AND '2016-05-17 23:59:59.999'