Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Datepart for time between (em vez de Convert date)


Apenas por exemplo, você pode usar isso
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

Mas, na verdade, isso não é uma solução!!!

A melhor maneira é introduzir mais 1 coluna calculada como
NewColumn AS DATEPART(HOUR, DateColumn)*100+DATEPART(minute, DateColumn)  

Crie um índice nele e use na cláusula where
WHERE NewColumn BETWEEN 1220 AND 1550