Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Част от датата за време между (вместо Преобразуване на дата)

Само за пример можете да използвате това

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

Но това всъщност не е решение!!!

Най-добрият начин е да въведете още 1 изчисляема колона като

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

Създайте индекс върху него и използвайте клауза in 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. Моята заявка Select SUM връща нула. Трябва да върне 0

  2. Откриване на последователни диапазони от дати с помощта на SQL

  3. ПОКАЖЕТЕ БАЗА ДАННИ Еквивалент в SQL Server – sp_databases

  4. Как да промените режима на оторизация на SQL Server без Management Studio

  5. Как да копирате огромни данни от таблица в друга таблица в SQL Server