我正在尝试编写一个可以根据某些日期返回 true 或 false 或 0 或 1 的函数。因此,假设您要检查开始和结束日期,例如“2010 年 3 月 1 日”和“2010 年 3 月 2 日”是否在日期范围内。因此,如果您的日期范围是“2012 年 1 月 1 日 - 2012 年 12 月 30 日”,它将返回 true,否则如果日期范围是“2011 年 1 月 1 日”至 2011 年 12 月 30 日,那么它将返回 false。
目前我使用以下,我觉得它没有优化,当你多次调用它时需要一些时间。
CREATE FUNCTION dbo.tmpfnIsDateInRange (@rangeStart DATETIME,
@rangeEnd DATETIME,
@chkStart DATETIME,
@chkEnd DATETIME)
RETURNS TINYINT
AS
BEGIN
RETURN CASE
WHEN @chkStart BETWEEN @rangeStart AND @rangeEnd
OR @chkEnd BETWEEN @rangeStart AND @rangeEnd
THEN
1
WHEN @chkStart <= @rangeStart AND @chkEnd >= @rangeEnd
THEN
1
ELSE
0
END;
END