sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo puedo excluir el límite superior en BETWEEN sql server?

Sí, usarías >= y < típicamente para consultas de rango de fecha/hora

Alternativamente, puede restar 3 milisegundos del límite superior para obtener el valor de fecha y hora más alto (no el más nuevo, fecha y hora2) para ese día (xxx 23:59.59.997 )

SELECT * FROM   log_file
WHERE  submission_date BETWEEN 1323714600000 AND 1323801000000-3

Nota:restar 1 probablemente estaría bien si todo son milisegundos...

Editar, ejemplo de por qué 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

Y curiosamente, ¿estás seguro de que es medianoche?
Durante 1323813600 segundos, obtengo 2011-12-13 22:00:00

En el servidor SQL:

SELECT DATEADD(second, 1323813600, '19700101') 

En MySQL

SELECT FROM_UNIXTIME(1323813600)