如何检查 DateTime 是否在 String 时间之内?
How to check if DateTime lies within String times?
DECLARE @CurDate datetime,
@Begintime nvarchar(10),
@Endtime nvarchar(10)
SELECT @CurDate = GETDATE()
SELECT @Begintime = '9:00 AM'
SELECT @Endtime = '5:00 PM'
检查 CurDate 是否在给定时间内的最佳方法是什么?谢谢!
使用 SQL 服务器 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
使用函数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
此致,
DECLARE @CurDate datetime,
@Begintime nvarchar(10),
@Endtime nvarchar(10)
SELECT @CurDate = GETDATE()
SELECT @Begintime = '9:00 AM'
SELECT @Endtime = '5:00 PM'
检查 CurDate 是否在给定时间内的最佳方法是什么?谢谢!
使用 SQL 服务器 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
使用函数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
此致,