sql >> Database >  >> RDS >> Sqlserver

Datepart voor tijd tussen (in plaats van Convert date)

U kunt dit bijvoorbeeld gebruiken

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

Maar dit is eigenlijk geen oplossing!!!

De beste manier is om nog 1 berekende kolom in te voeren als

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

Maak er een index op en gebruik de in where-clausule

WHERE NewColumn BETWEEN 1220 AND 1550


  1. Hoe EXTRACT() werkt in MariaDB

  2. Gebeurtenissen verwijderen uit het e-maillogboek van de database in SQL Server (T-SQL)

  3. Laravel 5.3 Modellen maken Retouren Veld heeft geen standaardwaarde

  4. Mysql - jaar selecteren uit een Unix-tijdstempel