检查特定日期 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'
我有 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'