如何在-sql-server第2部分中获取范围时间

时间:2018-02-08 08:50:41

标签: sql sql-server

与此问题相关

How to get range time in sql server

当我的输入值为 18:00

时,我希望获得转换2

以上帖子的例子:

declare @param_value_from_hour varchar(20) = '18:00'
;with myTable as (
    select * 
    from (
        values 
            (1, '7:00:00', '18:00:00')
            , (2, '18:00:00', '7:00:00')
    ) t(Shift, From_Hour, To_Hour)
)

select
    * 
from
    myTable
where
   (@param_value_from_hour between From_Hour and To_Hour) or
   (To_Hour < From_Hour and
       (@param_value_from_hour < To_Hour or
        From_Hour < @param_value_from_hour)
   )

但是通过这个解决方案,我得到第1班,任何人都可以帮助我在这里失踪了谢谢你

2 个答案:

答案 0 :(得分:0)

WHERE
  (
        @param_value_from_hour >= From_Hour
    AND @param_value_from_hour <  To_Hour
  )
  OR
  (
    From_Hour > To_Hour
    AND
    (
         @param_value_from_hour >= From_Hour
      OR @param_value_from_hour <  To_Hour
    )
  )

答案 1 :(得分:0)

poli,你必须将myTable作为CTE吗?这里的问题是“时间”列的数据类型..请检查您可以提及数据类型的临时表/类似方法是否适用于您

 let connection;

 export const getConnection = () => {
   if (!connection) connection = IRC.createConnection("XXXX");
   return connection; 
 }