如何检查DateTime是否在String时间内?

时间:2015-02-18 16:37:16

标签: sql sql-server-2008

DECLARE @CurDate datetime,
    @Begintime nvarchar(10),
    @Endtime nvarchar(10)

SELECT @CurDate = GETDATE()
SELECT @Begintime = '9:00 AM'
SELECT @Endtime = '5:00 PM'

检查CurDate是否在给定时间内的最佳方法是什么?谢谢!

2 个答案:

答案 0 :(得分:2)

使用SQL Server 2008 及更高版本,您可以将当前时间以及开始和结束时间(nvarchar)转换为TIME变量,然后进行检查:

DECLARE @CurrTime TIME = CAST(@CurDate AS TIME)
DECLARE @TimeFrom TIME = CAST(@Begintime AS TIME)
DECLARE @TimeTo TIME = CAST(@Endtime AS TIME)

SELECT 
    @CurrTime, @TimeFrom, @TimeTo,
    CASE 
        WHEN @CurrTime BETWEEN @TimeFrom AND @TimeTo THEN 'Yes!'
        ELSE 'No, sorry'
    END

答案 1 :(得分:0)

使用函数DATEDIFF计算小时和分钟差异。 这里 - > https://msdn.microsoft.com/en-us/library/ms189794.aspx

我不会使用nvarchar,而是使用类似的东西:

@BeginTime = DATEADD(hour, 9, CONVERT(datetime,CONVERT(date,getdate()))) 
@EndTime = DATEADD(hour, 17, CONVERT(datetime,CONVERT(date,getdate())))

使用条件可以是:

WHERE @CurDate BETWEEN @BeginTime AND @EndTime

致以最诚挚的问候,