0
我需要从工作台上得到的所有值不为空:条件。如果在SQL Server中
- 如果datetime列“开始”不为空到小于或等于现在。如果它为空,我需要忽略开始验证。
- 如果日期时间列'停止'不为空并且大于或等于现在。如果是空我需要忽略停止验证
所以我创造了这个请求
DECLARE @currDate DATETIME;
SET @currDate = GETDATE();
SELECT *
FROM table
WHERE
-- here I have some other conditions
AND @currDate >= (CASE WHEN table.validityStart IS NOT NULL THEN table.validityStart ELSE @currDate END)
AND @currDate <= (CASE WHEN table.validityStop IS NOT NULL THEN table.validityStop ELSE @currDate END)
所以,如果停止或开始为null我比较当前日期时间与自身。我不认为这是创建此请求的最佳方式。
那么,有没有可能避免“其中”部分验证,如果值为空,但不是它本身比较
是的,这是可能的解决方案,但这里不是SARG。 – 2015-02-10 10:14:13
st mnmn的回答比较好。 (Upvoted!) – jarlh 2015-02-10 10:16:05