Rożnica pomiędzy dwiema kolumnami datetime (MSSQL 2016)

0

Witam,

Mam dwie kolumny datetime, chcę w kolejne dwie uzupełnić o wartość różnicy między nimi z pewnymi warunkami.
Jedna ma przedstawiać dane w godzinach i minutach, druga w sekundach.
Jak wygląda zapytanie w takim przypadku oraz jakiego typu powinny być te kolumny?

0

Dla MSSQL - DATEDIFF

https://msdn.microsoft.com/pl-pl/library/ms189794(v=sql.110).aspx

Edit: Przy czym .. jedna z zasad normalizacji mówi, że nie tworzymy kolumn z danymi które można wyliczyć na podstawie innych kolumn ... także po co chcesz wrzucać te kolumny właściwie ?

0
BlackBad napisał(a):

Dla MSSQL - DATEDIFF

https://msdn.microsoft.com/pl-pl/library/ms189794(v=sql.110).aspx

Edit: Przy czym .. jedna z zasad normalizacji mówi, że nie tworzymy kolumn z danymi które można wyliczyć na podstawie innych kolumn ... także po co chcesz wrzucać te kolumny właściwie ?

Dzięki wielkie,

Kolumny te są potrzebne przedstawiania danych za pomocą innych zewnętrznych programów i systemów, a nie każdy ma możliwość obliczania.

0
BlackBad napisał(a):

Edit: Przy czym .. jedna z zasad normalizacji mówi, że nie tworzymy kolumn z danymi które można wyliczyć na podstawie innych kolumn ... także po co chcesz wrzucać te kolumny właściwie ?

Permanentnie łamię tę zasadą ponieważ daje więcej szkody niż pożytku.
A wymyślił ją pewnie "autorytet", ale na pewno nie praktyk.

Wyprzedzając pytanie, dlaczego?
Z puntu widzenia bazy danych - jak poradzić sobie z faktem, że obliczenia niektórych wartości zależą od stanu obiektu i na poziomie każdego wierszą mogą być różne?
Albo - zmienił się algorytm obliczania, a logika ma dotyczyć rekordów "od teraz ", ale dla danych historycznych ma być bez zmian.
I co teraz?
Stosować ifologię w polach kalkulowanych/procedurach/whatever?
To upierdliwe i trudne do utrzymywania, kłopotu z tym sporo, a zysk żaden.
Bo niby oszczędzę 4 bajty na wierszu?
Być może, ale odczyt będzie zawsze szybszy niż obliczanie.

Moim zdaniem utrwalanie takich informacji jest po prostu lepszym pomysłem.
A ta niby "dobra rada" pochodzi z czasów, kiedy "640 KiB pamięci wystarczy każdemu"...

Podobnie jest zresztą z utrzymywaniem logiki w bazie danych, ale to temat nie taki oczywisty i nie ma rozwiązań zero-jedynkowych.

0

Generalnie się nawet z Tobą zgadzam ;) ... w szczególe to po prostu zależy od konkretnego wypadku. Tutaj przytoczyłem tą/tę(?) zasadę dla tego, że mowa o wyliczaniu daty/czasu ... a już patrzeć nie mogę na tabele z kolumnami data | rok | miesiąc | week etc. w tej samej tabeli gdzie oczywiście rok/miesiąc itp są wyliczone po prostu na podstawie kolumny data. Ot i tyle ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1