查询在两天之间选择

时间:2012-04-05 20:47:04

标签: sql tsql sql-server-2005

我正在尝试构建一个基于DateTimeSyncDate进行选择的查询。

作为一些背景知识,我查询的表每天都会在每天完全相同的时间内获得数千个导入。我想找到那些在“常规”时间没有导入的条目。

因此,我想查询DateTime列中两次之间的时间:在任何日/月/年期间,请说14:00-14:30(2-230)。

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

DatePart函数似乎是我需要的,但我不明白如何将它应用于这种情况。非常感谢哦,你的帮助很棒。

编辑:我错了,我正在运行SQL-Server-2005作为我的后端。遗憾!

2 个答案:

答案 0 :(得分:24)

由于您使用的是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。

答案 1 :(得分: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