我正在尝试构建一个基于DateTime
列SyncDate
进行选择的查询。
作为一些背景知识,我查询的表每天都会在每天完全相同的时间内获得数千个导入。我想找到那些在“常规”时间没有导入的条目。
因此,我想查询DateTime
列中两次之间的时间:在任何日/月/年期间,请说14:00-14:30(2-230)。
SELECT * FROM MyTable
WHERE DatePart(SyncDate, ..?) BETWEEN (14:00..?) and (14:30..?)
DatePart
函数似乎是我需要的,但我不明白如何将它应用于这种情况。非常感谢哦,你的帮助很棒。
答案 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