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

时间:2016-05-17 12:42:51

标签: sql sql-server-2005

我有一张表格,我想检查特定用户的计数,查看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

3 个答案:

答案 0 :(得分:2)

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

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 server总是将它视为相同,而格式dd/mm/yyyy是不明确的:
01/04/2016代表2016年4月1日或1月4日?

另一件事:我总是更喜欢使用>=<=代替between...and - 因为between...and包含第一个值但排除了最后一个,那就是一个小小的有点混乱。使用<=>=它更清晰。

答案 1 :(得分:1)

使用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

答案 2 :(得分:0)

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

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'