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

Inkluderer MS SQL Servers mellem rækkeviddegrænserne?

BETWEEN-operatøren er inklusive.

Fra bøger online:

BETWEEN returnerer TRUE, hvis værdien af ​​test_expression er større end eller lig med værdien af ​​start_expression og mindre end eller lig med værdien af ​​end_expression.

DatoTidsadvarsel

NB:Med DateTimes skal du være forsigtig; hvis kun en dato er angivet, tages værdien fra midnat den dag; for at undgå at gå glip af tidspunkter inden for din slutdato eller gentage indsamlingen af ​​den følgende dags data ved midnat i flere intervaller, skal din slutdato være 3 millisekunder før midnat på dagen efter din til dato. 3 millisekunder, fordi mindre end dette og værdien vil blive rundet op til midnat næste dag.

for eksempel. for at få alle værdier inden for juni 2016 skal du køre:

where myDateTime between '20160601' and DATEADD(millisecond, -3, '20160701')

dvs.

where myDateTime between '20160601 00:00:00.000' and '20160630 23:59:59.997'

datetime2 og datetime offset

Hvis du trækker 3 ms fra en dato, bliver du sårbar over for manglende rækker fra 3 ms-vinduet. Den rigtige løsning er også den enkleste:

where myDateTime >= '20160601' AND myDateTime < '20160701'


  1. Krypter adgangskode i R - for at oprette forbindelse til en Oracle DB ved hjælp af RODBC

  2. Sammenligning af databaseproxy-failover-tider - ProxySQL, MaxScale og HAProxy

  3. Oracle DB citat kolonnenavne

  4. SQL Server 2016 – Introduktion til Stretch Database