Frage

Welcher Ansatz ist bei der Implementierung zeitlicher Datum-Uhrzeit-Paare der bessere?

Ansatz 1

_RK   FROM_DTTM              TO_DTTM 
1     01-JAN-2012 00:00:00   31-DEC-2012 23:59:59 ------------> Old record closed out 
1     01-JAN-2013 00:00:00   31-DEC-4949 23:59:59 ------------> New active record

Wird wie folgt mit einer Filterklausel verwendet:

 where FROM_DTTM <= &FILTER_DATE <= TO_DTTM

Ansatz 2

_RK   FROM_DTTM              TO_DTTM 
1     01-JAN-2012 00:00:00   01-JAN-2013 00:00:00 ------------> Old record closed out 
1     01-JAN-2013 00:00:00   31-DEC-4949 23:59:59 ------------> New active record

Wird wie folgt mit einer Filterklausel verwendet:

 where FROM_DTTM <= &FILTER_DATE < TO_DTTM

Überlegungen:

Ansatz 1 ist mit der BETWEEN-Klauselsyntax (einschließlich Bereich) kompatibel.Aus diesem Grund halte ich es für den besten Ansatz, aber – und das ist meine Sorge – es wird immer eine Lücke zwischen den Schließ- und Öffnungszeitstempeln geben!Beispielsweise wird Folgendes (aus geschäftlicher Sicht fälschlicherweise) nichts zurückgeben:

 where FROM_DTTM <= '31-DEC-2012 23:59:59.1'dt <= TO_DTTM

Verschiedene Datenbanken weisen hier unterschiedliche Genauigkeitsgrade auf.Ich denke, es müsste Standard sein (beim Filtern immer auf die nächste Sekunde runden), aber ich habe mich nur gefragt, ob es andere Gründe gibt, Ansatz 1 zu unterstützen (z. B. die vorgeschlagene bitemporale „AS OF“-Syntaxkompatibilität)?Oder tatsächlich, ob (und warum) Ansatz 2 vorzuziehen wäre.

War es hilfreich?

Lösung

Für Kontinuen (z. B. Datum/Uhrzeit oder numerische Maße) würde ich fast immer den halboffenen Intervallansatz (Ansatz 2) empfehlen.Wie Sie sagen, führt Ansatz 1 tendenziell zu Lücken, oder Sie müssen die genaue Genauigkeit kennen, um den Endpunkt zu berechnen.Die Berechnung der Endpunkte in Ansatz 2 ist tendenziell immer einfacher.

Der „Vorteil“ der Nutzungsfähigkeit BETWEEN ist für mich ein sehr geringfügiges Problem im Vergleich dazu, sich schnell von der Richtigkeit der Anfrage überzeugen zu können.

Für nicht kontinuierliche Daten (Datumsangaben ohne Uhrzeit oder diskrete Zahlen) greife ich möglicherweise auf die Verwendung eines geschlossenen Intervalls zurück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top