sql >> Base de Datos >  >> RDS >> Sqlserver

Una sola consulta SQL que puede manejar un rango de fechas nulo o valorado en el servidor SQL

WITH    limits AS
        (
        SELECT  COALESCE(@startDate, MIN(mydate)) AS startDate, COALESCE(@endDate, MAX(mydate)) AS endDate
        FROM    mytable
        )
SELECT  m.*
FROM    limits
JOIN    mytable m
ON      mydate BETWEEN startDate AND endDate

Esto será más eficiente si hay un índice en mydate , ya que esta condición es sargable y usará un Index Seek .

Si no hay índice, utilice IFNULL construcciones propuestas por otros.