如果当前时间介于特定时间段之间,如何从SQL Server 2005中的getdate()确定。如果是,则必须将标志设置为另外两个。
类似
getdate() timeperiod between 09:00 and 18:00 then flag =1 else flag=2
请帮助解决这个问题。
答案 0 :(得分:2)
根据http://msdn.microsoft.com/en-us/library/ms174420(v=sql.90).aspx
sql 2005有datepart。我会用那个。我不知道你的整个查询,所以这里是我将如何根据我所知道的使用它的一个例子。
select timeperiod, datepart(HH,timeperiod), case
when datepart(HH,timeperiod) >= 8 and datepart(HH,timeperiod) < 9 then 1
else 2
end as yourCase
from Visit
答案 1 :(得分:2)
虽然drewlander提出了一个非常好的解决方案。我相信这稍微好一些:
SELECT CASE WHEN dateadd(d,-datediff(d, 0, timeperiod), timeperiod)
BETWEEN '1900-01-01T08:00:00' and '1900-01-01T18:00:00'
THEN 1 ELSE 2 END flag
FROM <table>
将日期部分从日期时间开始制作非常容易比较。这也适用于08:15至18:03等时间。
答案 2 :(得分:0)
/* declare @MY_syncDate datetime
set @MY_syncDate=getdate()
*/
SELECT case when CAST(MY_SyncDate AS TIME) BETWEEN '9:00' and '18:00' then 1 else 0 end as flag;