2014-01-21 38 views

回答

2

根据http://msdn.microsoft.com/en-us/library/ms174420(v=sql.90).aspx

2005 SQL有日期部分。我会用它。我不知道你的整个查询,所以这里是我如何基于我所知道的使用它的一个例子。

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 
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; 
+1

SQL Server 2005没有'TIME' –

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的时间。

相关问题