我想在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”。 请提出解决方案。
答案 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