Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Datepart dla czasu pomiędzy (zamiast Konwertuj datę)

Na przykład możesz użyć tego

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

Ale to właściwie nie jest rozwiązanie!!!

Najlepszym sposobem jest wprowadzenie 1 dodatkowej kolumny obliczeniowej jako

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

Utwórz indeks i użyj w klauzuli where

WHERE NewColumn BETWEEN 1220 AND 1550


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:dynamiczny przestaw na 5 kolumn

  2. Jak mogę dowiedzieć się, jakie ograniczenie klucza obcego odwołuje się do tabeli w programie SQL Server?

  3. Jak przekazać wartość do parametru procedury składowanej w składniku źródłowym OLE DB?

  4. Nie można połączyć się z serwerem SQL za pomocą PHP

  5. 2 sposoby sprawdzenia, czy przestarzałe funkcje są nadal używane w wystąpieniu programu SQL Server