sql >> Databáze >  >> RDS >> Sqlserver

Datepart pro čas mezi (místo Převést datum)

Můžete například použít toto

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

To ale ve skutečnosti není řešení!!!

Nejlepší způsob je zavést 1 další vypočítaný sloupec jako

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

Vytvořte na něm index a použijte klauzuli in where

WHERE NewColumn BETWEEN 1220 AND 1550


  1. Řešení pro ORA-00997:nelegální použití datového typu LONG

  2. Java - připojení JDBC

  3. získat celkový limit v mysql pomocí stejného dotazu?

  4. Jak zrychlit SELECT .. LIKE dotazy v MySQL na více sloupcích?