10

我正在尝试构建一个基于DateTime列进行选择的查询SyncDate

作为一些背景,我查询的表每天都在同一时间每天导入数千个。我想找到在一天中的“常规”时间没有导入的条目。

因此,我想查询DateTime列中的时间在两次之间的位置:假设在任何一天/月/年期间的 14:00-14:30 (2-230)。

SELECT * FROM MyTable
WHERE DatePart(SyncDate, ..?) BETWEEN (14:00..?) and (14:30..?)

DatePart功能似乎是我需要的,但我不明白如何将其应用于这种情况。非常感谢您的帮助哦伟大的查询者。

编辑:我错了,我运行 SQL-Server-2005 作为我的后端。对不起!

4

2 回答 2

28

由于您使用的是 SQL Server 2008,因此您可以使用新的TIME数据类型:

SELECT * FROM MyTable
WHERE CAST(SyncDate AS TIME) BETWEEN '14:00' and '14:30'

如果您的后端还不是 2008 年 :-) 那么您需要类似的东西:

SELECT * FROM MyTable
WHERE DATEPART(HOUR, SyncDate) = 14 AND DATEPART(MINUTE, SyncDate) BETWEEN 0 AND 30

检查 14:00-14:30 小时。

于 2012-04-05T20:52:20.770 回答
2

这个怎么样....

select * from MyTable where
cast(cast(datepart(HH,SyncDate) as char(2)) + cast(datepart(HH,SyncDate) as char(2)) as int) between 1400 and 1430
于 2012-04-05T20:56:34.030 回答