No existe tal funcionalidad en SQL Server. Puede encontrar fácilmente el min and max dates permitido en BOL (1753-01-01 - 9999-12-31). O podría codificar fácilmente otra fecha fácilmente (si realmente está trabajando con cumpleaños, 1800-01-01 - 2100-12-31 probablemente sería suficiente). O bien, podría (si se trata de la consulta gama has mostrado), tiene la coalescencia caer de nuevo a la misma fecha de nacimiento:
SELECT EmployeeName FROM Employee
WHERE EmployeeID = @EmployeeId AND
Birthday BETWEEN Coalesce(@StartDate, Birthday) AND
Coalesce(@EndDate, Birthday)
Pero tenga en cuenta que esto no necesariamente escalar bien para tablas muy grandes.
Editado después de aceptar, para responder a un comentario de OP
En general, para SQL, si usted está necesitando de datos "de referencia" con frecuencia, se añaden como una mesa de sí mismo. (Google para "tabla de calendario" o "tabla de números sql"). Así pues, en este caso, si quisiera, podría agregar un "constantes" (o tal vez la tabla "límites"):
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
que luego se podría hacer referencia en las consultas (ya sea a través de una subselección, o mediante cruz de unión a esta mesa). P.ej.
SELECT EmployeeName
FROM Employee, Constants
WHERE EmployeeID = @EmployeeId AND
Birthday BETWEEN Coalesce(@StartDate, Constants.datetimeMin) AND
Coalesce(@EndDate, Constants.datetimeMax)
(La cerradura, clave principal, y la restricción de comprobación, trabajar juntos para asegurar que sólo una única fila volverá a existir en esta tabla)
Muy interesante. Nunca antes había visto el tipo de patrón Coalesce (@StartDate, Birthday). Creo que crear una variable llamada maxdate y mindate y establecer sus valores a las fechas de hardcoded podría ser mucho más legible. Pero sí, la información principal que estaba buscando era la falta de las enumeraciones/constantes en SQL – Chaitanya
Truco Re COALESCE - +1 a la afirmación de que no se escalaría para tablas grandes, SQL Server no parece poder usar el índice en la columna de cumpleaños. Las fechas mínimas y máximas de codificación dura funcionan bien con el índice. –