Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Datepart pour le temps entre (au lieu de Convertir la date)

Juste par exemple, vous pouvez utiliser ceci

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

Mais ce n'est en fait pas une solution !!!

La meilleure façon est d'introduire 1 colonne calculée supplémentaire comme

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

Créez un index dessus et utilisez la clause where

WHERE NewColumn BETWEEN 1220 AND 1550