如何比较sql server

时间:2016-10-10 17:03:01

标签: sql sql-server

我想在sql server中比较两个时间值和当前时间。时间是24小时格式。我正在尝试的代码是,

declare @StartTime varchar(10)='16:30' 
declare @EndTime varchar(10)='10:10' 
declare @CurrTime varchar(10)='09:30'

 select case when CONVERT(time,@CurrTime) between CONVERT(time,@StartTime)  and CONVERT(time,@EndTime) then 'SUCCESS' else 'FAIL' end

并将输出显示为“FAIL”。 请提出解决方案。

1 个答案:

答案 0 :(得分:0)

您需要使用datetime数据类型和CASE WHEN来检查开始日期>结束日期将DATEADD应用于星号日期,以防它更大然后结束日期:

DECLARE @Start nvarchar(5)= N'16:30',
        @End nvarchar(5)= N'10:10',
        @Curr nvarchar(5)=N'09:30'

DECLARE @curdate nvarchar(9) = CONVERT(nvarchar(10),GETDATE(),112)+' '

DECLARE @starttime datetime = @curdate + @Start + ':00.000',
        @endtime datetime = @curdate + @End + ':00.000',
        @currtime datetime = @curdate + @Curr + ':00.000'

SELECT CASE WHEN @currtime between (
     CASE WHEN @starttime > @endtime 
            THEN DATEADD(day,-1,@starttime)
            ELSE @starttime END
                        )  and @endtime THEN 'SUCCESS' 
                                        ELSE 'FAIL' END as result