如何从SQL Server 2005中的getdate()确定当前时间是否在特定时间段之间。如果那就必须将标志设置为另外两个。如何查找当前时间在SQL-Server中的特定时间段
像
getdate() timeperiod between 09:00 and 18:00 then flag =1 else flag=2
请帮助解决这个问题。
如何从SQL Server 2005中的getdate()确定当前时间是否在特定时间段之间。如果那就必须将标志设置为另外两个。如何查找当前时间在SQL-Server中的特定时间段
像
getdate() timeperiod between 09:00 and 18:00 then flag =1 else flag=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
/* 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;
虽然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的时间。
SQL Server 2005没有'TIME' –