我需要做一个简单的查询来计算我在特定时间段内有多少记录 像日,月,年 伪示例:
SELECT COUNT( EmployeeID)
FROM HumanResources.Employees
WHERE Hire Date.YEAR = 'year'
GROUP BY Hire Date.YEAR
这段代码不起作用,应该是什么?
答案 0 :(得分:1)
您可以使用YEAR()和MONTH()函数将信息拆分为句点。
例如:
SELECT YEAR(Hire Date), MONTH(Hire Date), COUNT( EmployeeID) FROM
HumanResources.Employees WHERE YEAR(Hire Date) = 'year'
GROUP BY YEAR(Hire Date),MONTH(Hire Date)
答案 1 :(得分:0)
这是查询
select COUNT(EmployeeID)
from HumanResources.Employees
where year(Hire Date)=2011
and month(Hire Date)=03
group by Hire Date
如果要查询日期范围
select COUNT(EmployeeID)
from HumanResources.Employees
where Hire date between '2011/03/01' and '2011/03/03'
group by Hire Date
答案 2 :(得分:0)
查看SQL Server DatePart函数
WHERE DatePart(y, [Hire Date]) = 2011
GROUP BY DatePart(y, [Hire Date])
您可以使用多个日期部分(月,季,周,日,周日等)替换y
答案 3 :(得分:0)
假设您可以建立您想要计算记录的范围的开始和结束日期,那么我将使用BETWEEN运算符。
SELECT COUNT(EmployeeID)
FROM Employees emp
WHERE HireDate BETWEEN @rangeStartDate AND @rangeEndDate
如果使用不同的范围是您需要的一部分,并且假设您纯粹在T-SQL中执行此操作,则可以使用DATEADD函数根据特定偏移和已知范围开始计算范围结束日期日期。
答案 4 :(得分:0)
e.g。查找2010年雇用的员工人数:
SELECT COUNT(EmployeeID)
FROM HumanResources.Employees
WHERE [Hire Date] >= '20100101' AND [Hire Date] < '20110101'
这样做意味着如果有一个雇用日期的索引,它将被使用(更好的性能)。一旦开始操作正在搜索的列(例如使用YEAR()或MONTH()函数),就会失去使用索引的能力。
这是你要追求的那种东西吗?
答案 5 :(得分:0)
如果您要查找的是将其转换为LINQ-to-SQL,则以下应该可以正常工作:
var count = (from e in HumanResourcesDataContext.Employees
where e.HireDate.Year = 2011 // or whatever you want it to be
select e).Count();