Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como posso excluir o limite superior no servidor sql BETWEEN


Sim, você usaria >= e < normalmente para consultas de intervalo de tempo/data

Como alternativa, você pode subtrair 3 milissegundos do limite superior para obter o valor de data e hora mais alto (não mais novo datetime2) para esse dia (xxx 23:59.59.997 )
SELECT * FROM   log_file
WHERE  submission_date BETWEEN 1323714600000 AND 1323801000000-3

Nota:subtrair 1 provavelmente seria OK se tudo fosse milissegundos...

Editar, exemplo do porquê 3ms
SELECT 
    DATEADD(millisecond, -1, '20111214'), -- 2011-12-14 00:00:00.000
    DATEADD(millisecond, -2, '20111214'), -- 2011-12-13 23:59:59.997
    DATEADD(millisecond, -3, '20111214')  -- 2011-12-13 23:59:59.997

E, curiosamente, você tem certeza de que é meia-noite?
Por 1323813600 segundos, recebo 2011-12-13 22:00:00

No SQL Server:
SELECT DATEADD(second, 1323813600, '19700101') 

No MySQL
SELECT FROM_UNIXTIME(1323813600)