SqlHints.com

również dla „DateTime2” (vs. „DateTime”):

1. Użycie funkcji „DateAdd” nie jest trywialnym obejściem, ponieważ nie jest bez niejawną / łatwą konwersją do liczb zmiennoprzecinkowych (# dni.ułamek dnia) od min date-time, esp. próbujesz wziąć pod uwagę wiele (jeśli nie wszystkie) części daty (tj. Dodanie / Odejmowanie 2 pełnych czasów daty razem / od siebie).

2. Nie można łatwo obliczyć ” wieku „(np. po prostu odejmując jeden” DateTime ” od drugiego vs. korzystanie z funkcji „DateDiff”, która nie zwraca” age”, gdy dwie daty znajdują się po przeciwnych stronach granicy kalendarza / zegara określonej jednostki).

3. Nie można łatwo użyć w funkcji agregacji ” Avg „(po prostu”Cast „’ing do” Float „pierwszy i z powrotem do”DateTime”). Btw, jeśli pytasz, jaki jest cel uzyskania ” Avg ” czasu datowania: poza używaniem do uzyskiwania średniego czasu trwania, gdy czasy dat (od wspólnej bazowej daty czasu) są używane do reprezentowania czasu trwania (powszechna praktyka), przydatne jest również uzyskanie statystyk typu Pulpitu nawigacyjnego dotyczących tego, jaka jest średnia data w zakresie / grupie czasów dat. Standardowe zapytanie ad-hoc do badania / rozwiązywania problemów z wartościami w kolumnie, które mogą nie być ważne kiedykolwiek / dłużej i / lub mogą być przestarzałe, to lista dla każdej wartości liczby wystąpień i (jeśli są dostępne) znaczników daty i czasu MIN, avg i max powiązanych z tą wartością.

tak, zdaję sobie sprawę, że istnieje (dość złożona) formuła obejścia problemu (w „https://siderite.blogspot.com/2015/08/how-to-translate-t-sql-datetime2-to.html”), ale nawet ta formuła działa tylko dla czasów daty nowszych niż rok 1970 (co oznacza, że tracisz cały dodatkowy zakres *plus* 217 lat i ten dodatkowy zakres jest prawdopodobnie (podobno) jedną z największych zalet 2″ DateTime2″, choć prawdopodobnie nie jest potrzebna w większości przypadków użycia), i niekoniecznie jest trywialne, aby obsługiwać większy zakres z powodu możliwych problemów z przepełnieniem liczb.

i, tak, zdaję sobie sprawę, że możesz najpierw „rzucić” na „DateTime” (i jeśli to konieczne z powrotem do „DateTime2”), ale stracisz dodatkową precyzję i ponownie, dodatkowy zakres (Wszystkie przed rokiem 1753) korzyści z „DateTime2” vs. „DateTime”, które ponownie są prawdopodobnie największe 2, a także w tym samym czasie, prawdopodobnie nie są prawdopodobnie potrzebne, co nasuwa pytanie, po co go używać, gdy tracisz implicit / easy conversions to floating-point numeric (# dni) do dodawania / odejmowania / „wieku” (vs. datediff) / AVG Calcs korzyść, która jest duża z mojego doświadczenia.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

More: