sql >> Databasteknik >  >> RDS >> Sqlserver

Fråga för att kontrollera överlappande intervall i sql-server?

Det enklaste sättet att hitta en överlappning är så här:

IF EXISTS (SELECT 1 FROM table WHERE @myValueLo <= ExistingRangeEnd AND @myValueHi >= ExistingRangeStart)
  -- Overlaps
ELSE
  -- Doesn't overlap

Detta kan visa sig fungera om du jämför villkoret ovan med var och en av staplarna i diagrammet nedan:

Existing range:         |-------------------|
Overlaps:       |-------------|       |------------|
                |----------------------------------|
                           |-------------|
Not overlaps:   |-----|                       |----|

i alla överlappningsfall är båda dessa test sanna:

  • startdatumet av det befintliga intervallet är alltid före slutdatumet av det nya sortimentet
  • slutdatumet av det befintliga intervallet är efter startdatumet av det nya sortimentet

De som inte överlappar misslyckas med det ena eller andra testet.



  1. IDE för Pl/SQL-utveckling

  2. Ubuntu - 12.04 - MySql startar inte med att använda tjänsten mysql start

  3. Vad du ska göra om du får ett felaktigt ordningsfel för bokmärket när du använder SQL Server med vår Oracle ODBC-drivrutin

  4. JDBC-anslutning skapad ineclipse fungerar inte som den ska