如何在SQL-Server中的某个时间段之间找到当前时间

时间:2014-01-21 09:21:58

标签: sql-server sql-server-2005 datetime time

如果当前时间介于特定时间段之间,如何从SQL Server 2005中的getdate()确定。如果是,则必须将标志设置为另外两个。

类似

  

getdate() timeperiod between 09:00 and 18:00 then flag =1 else flag=2

请帮助解决这个问题。

3 个答案:

答案 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;