需要选择前一天但上午08:00之前的行。
(date >= dateadd(day,datediff(day,1,GETDATE()),0)
AND CONVERT(varchar, date,108) BETWEEN '00:00:00' AND '08:00:00')
返回前一天至上午08:00之前的行。
答案 0 :(得分:3)
您可以使用:
where date >= dateadd(day, -1, convert(date, getdate())) and
date < dateadd(hour, -16, convert(date, getdate()))
此查询是结构化的,因此可以利用索引。
您也可以这样表达:
where convert(date, [date]) = dateadd(day, -1, convert(date, getdate()) and
convert(time, [date]) <= '08:00:00'
这也应该使用索引,因为转换为日期可能是唯一不会阻止使用索引的函数。
答案 1 :(得分:2)
您在正确的轨道上。在昨天的开始和昨天的开始+ 8小时进行一次BETWEEN
检查:
date BETWEEN dateadd(day,datediff(day,1,GETDATE()),0)
AND dateadd(hour, 8, dateadd(day,datediff(day,1,GETDATE()),0))