Verknüpfen von Tabellen basierend auf einem datetime -, aber die datetime-Wert kann variieren, innerhalb von 5 Minuten

Arbeite ich mit einigen eher schlecht gestaltete Tabellen hier, und die änderung der Struktur ist mehr oder weniger aus der Frage. Also mit dieser sagte, hier ist meine Frage.

Muss ich join TableB.Datum auf TableA.Date, mit einer Marge von etwa 5 Minuten. In anderen Worten, kann die Verknüpfung nicht darauf verlassen, eine perfekte übereinstimmung.

Also, wenn das Datum in Tabelle a ist 2011-12-01 10:00:00.000 beitreten würde mit einem Datensatz in Tabelle B, wo das Datum, 2011-12-01 10:03:00.000 oder 2011-12-01 09:59:00.000 oder 2011-12-01 10:04:35.000

Kam ich mit einem kleinen trick ein Spielraum der Differenz von etwa 1 minute, indem er den als smalldatetime datetime, die Tropfen die Sekunde und die Millisekunde aus der datetime-Wert. Es funktioniert ganz gut, aber ich brauche eine größere Marge als das.

LEFT JOIN TableB ON CAST(TableA.SomeDate AS smalldatetime) = CAST(TableB.SomeDate AS smalldatetime)

Die Datum-Spalte in Tabelle B ist die einzige Verbindung zwischen den Daten in den beiden Tabellen, so kann ich nicht die Ergebnisse filtern, innerhalb der WHERE-Klausel. Ich weiß, dies kann potenziell zu produzieren einige ungenaue Ergebnisse, sondern weil, wie und Wann die Daten gespeichert sind, ich sollte nicht laufen in irgendwelche Probleme.

Irgendwelche Vorschläge?

  • Abschneiden von casting zu smalldatetime ist nicht sogar nahe, das zu tun, was Sie wollen. Zeiten, die sich von einer Millisekunde, sondern lassen sich in verschiedenen Minuten, nicht übereinstimmt. Können Sie Tabellen hinzufügen, um die vorhandene Datenbank, z.B. eine Tabelle erstellen, die das Datum/Uhrzeit aus einer vorhandenen Tabelle erweitert, in 5 Minuten reicht und indiziert?
  • Das problem mit diesem ist, dass Sie haben, um zu definieren, die 5-Minuten-Marge mehr starr. Was ist, wenn 2 Ergebnisse für tableA sind innerhalb von 5 Minuten von einander? Haben Sie beide sich in den gleichen Datensatz auf tableB? Sie erhalten dann doppelte Datensätze. Was möchten Sie vielleicht zu tun ist, bin Ihr datetimes in 5-Minuten-Eimer, aber diese Starrheit möglicherweise nicht für den Zweck. Wenn das, was Sie wirklich versuchen zu tun, ist eine fuzzy-Daten-Analyse dann vielleicht SQL ist die falsche Wahl der Sprache.
InformationsquelleAutor user1003916 | 2011-12-12
Schreibe einen Kommentar