Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come posso escludere il limite superiore in BETWEEN sql server

Sì, useresti >= e < in genere per query su intervalli di tempo/data

In alternativa, puoi sottrarre 3 millisecondi dal limite superiore per ottenere il valore datetime più alto (non più recente datetime2) per quel giorno (xxx 23:59.59.997 )

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

Nota:la sottrazione di 1 sarebbe probabilmente OK se tutto è in millisecondi...

Modifica, esempio del perché 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, cosa interessante, sei sicuro che sia mezzanotte?
Per 1323813600 secondi, ricevo 2011-12-13 22:00:00

Su SQL Server:

SELECT DATEADD(second, 1323813600, '19700101') 

Su MySQL

SELECT FROM_UNIXTIME(1323813600)