Нет такой функциональности в SQL Server. Вы можете легко найти допустимые значения min и max в BOL (1753-01-01 - 9999-12-31). Или вы можете легко написать другую дату (если вы действительно работаете с днями рождения, 1800-01-01 - 2100-12-31, вероятно, будет достаточно). Или вы могли бы (если это запрос диапазона, который вы показали), чтобы объединение вернулось к самому дню рождения:
SELECT EmployeeName FROM Employee
WHERE EmployeeID = @EmployeeId AND
Birthday BETWEEN Coalesce(@StartDate, Birthday) AND
Coalesce(@EndDate, Birthday)
Но учтите, что это не обязательно будет хорошо масштабироваться для очень больших таблиц.
Отредактировано после принятия, чтобы ответить на комментарий от OP
Как правило, для SQL, если вам часто требуются "справочные" данные, вы сами добавляете их в виде таблицы. (Google для "таблицы календаря" или "таблицы чисел sql"). Таким образом, в этом случае, если вы хотите, вы можете добавить таблицу «константы» (или, возможно, «пределы»):
create table Constants (
Lock char(1) not null,
datetimeMin datetime not null,
datetimeMax datetime not null,
intMin int not null,
intMax int not null,
/* Other Min/Max columns, as required */
constraint PK_Constants PRIMARY KEY (Lock),
constraint CK_Constants_Locked CHECK (Lock='X')
)
insert into Constants (Lock,datetimeMin,datetimeMax,intMin,intMax)
select 'X','17530101','99991231',-2147483648,2147483647
Который вы могли бы затем ссылаться в запросах (либо через подвыбор, либо путем перекрестного соединения с этой таблицей). Э.Г.
SELECT EmployeeName
FROM Employee, Constants
WHERE EmployeeID = @EmployeeId AND
Birthday BETWEEN Coalesce(@StartDate, Constants.datetimeMin) AND
Coalesce(@EndDate, Constants.datetimeMax)
(ограничения Lock, Primary Key и Check работают вместе, чтобы гарантировать, что в этой таблице когда-либо будет только одна строка)