SqlHints.com

Auch für „DateTime2“ (vs. „DateTime“):

1. Die Verwendung der Funktion „DateAdd“ ist keine triviale Problemumgehung, um keine implizite / einfache Konvertierung in eine Gleitkommazahl (Anzahl der Tage) zu haben.bruchteil eines Tages) seit min Datum-Zeit, insb. sie versuchen, mehrere (wenn nicht alle) Teile des Datums zu berücksichtigen (dh 2 vollständige Datumszeiten zusammen / voneinander zu addieren / subtrahieren).

2. Kann „Alter“ nicht einfach berechnen (zB indem man einfach eine „DateTime“ von einer anderen subtrahiert vs. verwenden der Funktion „DateDiff“, die kein „Alter“ zurückgibt, wenn sich die beiden Datums- und Uhrzeiten auf gegenüberliegenden Seiten einer Kalender- / Uhrgrenze der angegebenen Einheit befinden).

3. Kann nicht einfach in der Aggregatfunktion „Avg“ verwendet werden (indem nur „Cast“ zuerst auf „Float“ und dann wieder auf „DateTime“ gesetzt wird). Übrigens, wenn Sie fragen, was der Zweck ist, einen „Durchschnitt“ der Datums- und Uhrzeiten zu erhalten: neben der Verwendung zum Abrufen der durchschnittlichen Dauer, wenn Datumszeiten (da eine gemeinsame Basisdatumszeit) zur Darstellung der Dauer verwendet werden (eine gängige Praxis), ist es auch nützlich, eine Dashboard-Statistik darüber abzurufen, wie hoch die durchschnittliche Datumszeit ist in einem Bereich / einer Gruppe von Datumszeiten. Eine standardmäßige Ad-hoc-Abfrage zum Recherchieren / Beheben von Werten in einer Spalte, die möglicherweise nicht mehr gültig sind und / oder veraltet sein müssen, besteht darin, für jeden Wert die Anzahl der Vorkommen und (falls verfügbar) die mit diesem Wert verknüpften Datums- / Zeitstempel min, avg und max aufzulisten.

Ja, mir ist klar, dass es eine (ziemlich komplexe) Problemumgehungsformel gibt (bei „https://siderite.blogspot.com/2015/08/how-to-translate-t-sql-datetime2-to.html“), aber selbst diese Formel funktioniert nur für Datumszeiten, die jünger als das Jahr 1970 sind (was bedeutet, dass Sie den gesamten zusätzlichen Bereich * plus * 217 Jahre verlieren und dieser zusätzliche Bereich ist wahrscheinlich (angeblich) einer der 2 größten Vorteile von „DateTime2“, obwohl er in den meisten Anwendungsfällen wahrscheinlich nicht benötigt wird), und es ist nicht unbedingt trivial, aufgrund möglicher numerischer Überlaufprobleme mehr Reichweite zu unterstützen.

Und ja, mir ist klar, dass Sie auch zuerst in „DateTime“ (und gegebenenfalls wieder in „DateTime2“) „umwandeln“ könnten, aber Sie würden die zusätzliche Genauigkeit und wieder den zusätzlichen Bereich verlieren (alle vor dem Jahr 1753) Vorteile von „DateTime2“ vs. „DateTime“, die wiederum wahrscheinlich die 2 größten und gleichzeitig wahrscheinlich nicht benötigten sind, was die Frage aufwirft, warum Sie sie verwenden sollten, wenn Sie die impliziten / einfachen Konvertierungen in Gleitkommazahlen (# tage) für Addition / Subtraktion / „Alter“ (vs. DateDiff) / Avg calcs Nutzen, der nach meiner Erfahrung ein großer ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

More: