【发布时间】:2012-01-18 17:59:19
【问题描述】:
我有一个日期时间字段,我想按日期计算从 8:00 到 9:00 的所有记录(即:从:01/01/2012 到:01/03/2012)。
例如,如果我有以下数据:
2012-01-01 08:26
2012-01-01 08:40
2012-01-01 09:26
2012-01-01 10:26
2012-01-02 08:06
2012-01-02 09:26
2012-01-02 09:40
2012-01-03 08:30
2012-01-03 10:26
结果应该是这样的:
2012-01-01 2
2012-01-02 1
2012-01-03 1
编辑: 这是我使用@gbn 解决方案得到的(它对我有用)
SELECT COUNT(*), convert(varchar(10),ScanDate,101)
FROM tblSingleBox (nolock)
WHERE DATEPART(Hour, scandate) = 8
and (scandate>='01/03/2012' and scandate<'01/05/2012')
GROUP BY convert(varchar(10),ScanDate,101)
order by convert(varchar(10),ScanDate,101)
【问题讨论】:
-
您的意思是 08:00:00.000 到 08:59:59.999?也就是说,是否包括 09:00?
-
sql server 2005,是的 8-8:59:59
-
@Somebody - 请注意,这个严格的查询(这是完全正确的)仍然扫描日期范围内的每条记录。如果您想要更快的查询,您可以改为通过 seek 获得,但查询更复杂。
-
@Dems 非常感谢你的提示,我给你投票了,你的建议。
标签: sql sql-server sql-server-2005