2016-04-06 6 views
-4

Tabelle A TransaktionsdetailsSQL Server: Hilfe benötigt Rückkehr Informationen, wo Wert aus Tabelle A fällt zwischen einem Datumsbereich in Tabelle B

TTime (datetime), TableAValues, TableAValues, <etc>... 

Tabelle B im Zusammenhang Tabelle

ID, DateTimeStart (datetime), DateTimeEnd (datetime), TableBValues, TableBValues, <etc>... 

Ich brauche einen Weg gibt eine Reihe von Informationen zurück, die alle Tabellenwerte sowie alle Tabellenwerte enthält, wobei die Zeittabelle A zwischen DateTimeStart und DateTimeEnd von Tabelle B liegt.

+1

Haben Sie sich auf SO an bestehende Frage wie http://stackoverflow.com/questions/5145637/querying-data-by-joining-two-ta Bles-in-zwei-Datenbank-auf-verschiedenen-Servern? – Charlie

+0

Doppelte Frage. Stellen Sie nicht dieselbe Frage, die zuvor von einem anderen Benutzer gestellt wurde. –

Antwort

0

Beachten Sie, dass BETWEEN inklusive ist, was bedeutet, dass es wahr zurückgibt, wenn A.TTime dasselbe wie B.StartDateTime oder B.EndDateTime ist. Wenn Sie nur diejenigen erhalten möchten, die wirklich zwischen Anfang und Ende fallen, sollten Sie mehr als > und weniger als < Operatoren verwenden.

Sie sollten auch an Genauigkeit auf SQL Server darüber im Klaren sein, pro MSDN, Datetime-Schritten von 0,000, .003

abgerundet ist, oder 0,007 Sekunden

Ausführen der folgenden Abfragen helfen illustrieren:

DECLARE @StartTime DATETIME = '2016-01-01 00:00:00.000', 
     @TestTime DATETIME = '2016-01-01 08:00:00.008', -- rounds down to .007  
     @EndTime1 DATETIME = '2016-01-01 08:00:00.007', -- stays the same 
     @EndTime2 DATETIME = '2016-01-01 08:00:00.006'; -- rounds up to .007    

SELECT 'Eh? What just happened?' 
WHERE @TestTime BETWEEN @Starttime AND @EndTime1; 

SELECT 'What is going on!' 
WHERE @TestTime BETWEEN @Starttime AND @EndTime2; 
Verwandte Themen