DECLARE @CurDate datetime,
@Begintime nvarchar(10),
@Endtime nvarchar(10)
SELECT @CurDate = GETDATE()
SELECT @Begintime = '9:00 AM'
SELECT @Endtime = '5:00 PM'
检查CurDate是否在给定时间内的最佳方法是什么?谢谢!
答案 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
致以最诚挚的问候,