一个简单的解决办法是:如果日期为之间或等于两个间隔日期
运营商之间
Select [Id], [Name] FROM [Product]
where
@Date Between CreatedAt AND isnull(UpdatedAt,@date)
的返回true,所以如果CreatedAt> @date返回假,则即使当UpdatedAt为空而这两者之间的上限将是@Date。
测试例如:
declare @date date = cast('20100601' as date)
;with Product as
(
select [Id], [Name] ,[CreatedAt],[UpdatedAt]
from
(values
(1,'Product 1',cast('20100101' as date),cast('20110101' as date))
,(2,'Product 2',cast('20100101' as date),null)
,(3,'Product 3',cast('20100701' as date),null)
) a([Id], [Name] ,[CreatedAt],[UpdatedAt])
)
Select
[Id], [Name] FROM [Product]
where
@Date Between CreatedAt AND isnull(UpdatedAt,@date)
其中@date CreatedAt和ISNULL(UpdatedAt,'12 /9999分之31' )..或任何日期远在你想要的未来之间。 – Jeremy