Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 检查特定时间范围内的时间_Sql_Sql Server_Tsql_Date_Time - Fatal编程技术网

Sql 检查特定时间范围内的时间

Sql 检查特定时间范围内的时间,sql,sql-server,tsql,date,time,Sql,Sql Server,Tsql,Date,Time,我想用案例陈述对时间格式做出决定。但无法使用时间格式做出正确的决定,因为我的时间范围的结束时间小于开始时间。让我用代码来解释 DECLARE @Startdate datetime DECLARE @START_TIME time(0) DECLARE @END_TIME time(0) SET @Startdate='2020-04-15 16:00:00.000' SET @START_TIME='15:30:00' SET @END_TIME='01:29:59' select CA

我想用
案例陈述
时间
格式做出决定。但无法使用
时间
格式做出正确的决定,因为我的时间范围的结束时间小于开始时间。让我用代码来解释

DECLARE @Startdate datetime
DECLARE @START_TIME time(0)
DECLARE @END_TIME time(0)

SET @Startdate='2020-04-15 16:00:00.000'
SET @START_TIME='15:30:00'
SET @END_TIME='01:29:59'

select 
CASE WHEN CAST(@Startdate as time(0)) between @START_TIME and @END_TIME  THEN 1 ELSE 0 END
我也有DB中的表,如下所示

ID  START_TIME  END_TIME
1   05:30:00    15:29:59
2   15:30:00    01:29:59
我只想检查一下到达时间
datetime
值是否与
ID
完全匹配。我不在乎约会的部分。我怎样才能做到这一点

提前感谢。

一种方法是:

select case 
    when 
        (
            @end_time >= @start_time 
            and cast(@startdate as time(0)) >= @start_time 
            and cast(@startdate as time(0)) <= @end_time  
        )
        or (
            @end_time < @start_time 
            and (
                   cast(@startdate as time(0)) >= @start_time 
                or cast(@startdate as time(0)) <= @end_time
            )
        )           
    then 1 
    else 0 
end
选择案例
什么时候
(
@结束时间>=@开始时间
并施放(@startdate作为时间(0))>=@start\u时间
并施放(@startdate作为时间(0))=@start\u时间

或cast(@startdate as time(0))您的SQL数据库是什么(例如MySQL、SQL Server、Oracle等)?Microsoft SQL Server
@Startdate='2020-04-15 13:00:00.000'
@Startdate='2020-04-15 16:00:00.000'
两次都返回1。但是13:00:00应该返回0。@Lacrymae:是的,这是正确的。我对查询做了一些修改,现在似乎产生了正确的结果。