Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie kann ich die Obergrenze in BETWEEN sql server ausschließen

Ja, Sie würden >= verwenden und < typischerweise für Zeit-/Datumsbereichsabfragen

Alternativ könnten Sie 3 Millisekunden von der Obergrenze abziehen, um den höchsten datetime-Wert (nicht neuer datetime2) für diesen Tag zu erhalten (xxx 23:59.59.997). )

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

Hinweis:Subtrahieren von 1 wäre wahrscheinlich in Ordnung, wenn alles Millisekunden ist ...

Edit, Beispiel warum 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

Und interessanterweise, sind Sie sicher, dass es Mitternacht ist?
Für 1323813600 Sekunden bekomme ich 2011-12-13 22:00:00

Auf SQL Server:

SELECT DATEADD(second, 1323813600, '19700101') 

Auf MySQL

SELECT FROM_UNIXTIME(1323813600)