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

Parte de fecha para el tiempo entre (en lugar de Convertir fecha)

Solo por ejemplo puedes usar esto

DECLARE 
    @min FLOAT = CAST(CAST('19000101 12:20' AS DATETIME) AS FLOAT),
    @max FLOAT = CAST(CAST('19000101 15:50' AS DATETIME) AS FLOAT)

SELECT 
    *
FROM table
WHERE CAST(DateField AS FLOAT) - FLOOR(CAST(DATEFIELD AS FLOAT)) BETWEEN @min AND @max

¡¡Pero esto no es una solución!!!

La mejor manera es introducir 1 columna calculada más como

NewColumn AS DATEPART(HOUR, DateColumn)*100+DATEPART(minute, DateColumn)  

Cree un índice en él y utilícelo en la cláusula where

WHERE NewColumn BETWEEN 1220 AND 1550