Sql server 如何在SQL Server中找到当前时间介于特定时间段之间

Sql server 如何在SQL Server中找到当前时间介于特定时间段之间,sql-server,sql-server-2005,datetime,time,Sql Server,Sql Server 2005,Datetime,Time,如何从SQL Server 2005中的getdate()确定当前时间是否介于特定时间段之间。如果是,则必须将标志设置为其他两个标志 差不多 getdate()时间段介于09:00和18:00之间,然后flag=1 else flag=2 请帮助解决此问题。根据 /* declare @MY_syncDate datetime set @MY_syncDate=getdate() */ SELECT case when CAST(MY_SyncDate AS TIME)

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

差不多

getdate()时间段介于09:00和18:00之间,然后flag=1 else flag=2

请帮助解决此问题。

根据

   /* 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;
SQL2005已经发布了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 
选择时间段、日期部分(HH、时间段)、大小写
当datepart(HH,timeperiod)>=8且datepart(HH,timeperiod)<9时,则为1
其他2
随你的便
参观
根据

SQL2005已经发布了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 
选择时间段、日期部分(HH、时间段)、大小写
当datepart(HH,timeperiod)>=8且datepart(HH,timeperiod)<9时,则为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> 
选择dateadd时的大小写(d,-datediff(d,0,timeperiod),timeperiod)
在“1900-01-01T08:00:00”和“1900-01-01T18:00:00”之间
然后是1或2结束标志
从…起

把白天的部分从datetime制作中去掉是很容易比较的。这也可以用于08:15到18:03这样的时间。

尽管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> 
选择dateadd时的大小写(d,-datediff(d,0,timeperiod),timeperiod)
在“1900-01-01T08:00:00”和“1900-01-01T18:00:00”之间
然后是1或2结束标志
从…起

把白天的部分从datetime制作中去掉是很容易比较的。这也可以用于08:15到18:03这样的时间。

SQLServer2005没有
TIME
SQLServer2005没有
TIME