Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment puis-je exclure la limite supérieure dans BETWEEN sql server

Oui, vous utiliseriez >= et < généralement pour les requêtes de plage horaire/date

Alternativement, vous pouvez soustraire 3 millisecondes de la limite supérieure pour obtenir la valeur datetime la plus élevée (pas la plus récente datetime2) pour ce jour (xxx 23:59.59.997 )

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

Remarque :soustraire 1 serait probablement OK si tout est en millisecondes...

Edit, exemple de pourquoi 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

Et fait intéressant, êtes-vous sûr qu'il est minuit ?
Pendant 1323813600 secondes, j'obtiens 2011-12-13 22:00:00

Sur SQL Server :

SELECT DATEADD(second, 1323813600, '19700101') 

Sur MySQL

SELECT FROM_UNIXTIME(1323813600)