Faktycznie, nie ma racjonalnego zachowania podczas dodawania datę i czas, chyba Znasz strefy czasowe dla obu wartości. Inne bazy danych mogą przyjmować pewną dowolną domyślną strefę czasową, ale SQL Server tego nie robi.
Gdyby projektanci T-SQL dodali takie wsparcie, większość starego kodu (zarówno po stronie serwera, jak i po stronie klienta) pękłaby z trudnymi do wykrycia błędami. Pamiętaj, że większość ludzi nadal używa starego typu datetime, zakładając domyślną strefę czasową (lokalną lub GMT).
Można argumentować, że dodanie datetimeoffset i czas powinno być możliwe, ponieważ pierwsza zawiera informacje o czasową, a drugi nie, ale myślę, że T-SQL projektant chciał, aby uniknąć nieporozumień podczas konwersji jednego datatype do drugiego. Wiele kodu po stronie klienta nadal by się zepsuło, chyba że ludzie zmieniliby kod ze świadomością strefy czasowej po stronie klienta.
Dlaczego więc brak wyraźnej funkcji, która powoduje dodanie? Prawdopodobnie też by nie działało, ponieważ typy datetime bez strefy czasowej są konwertowane niejawnie na datetimeoffset2. Można łatwo przekazać wartość bez strefy czasowej do takiej funkcji i zostanie ona przekonwertowana do niewłaściwej strefy czasowej PRZED jej przekazaniu do funkcji
Krótko mówiąc, zgodność wsteczna nie zapewnia bezpiecznego sposobu obsługi daty i czasu dodawania.
znalazłem ten Przydatny link http://beyondrelational.com/modules/2/blogs/77/Posts/18855/0239-sql-server-2012-msg-402-the-data-types-datetime i-time-are-incompatible-in-the-addsubtract-op.aspx –
możliwy duplikat [TSQL do dodania pola datetime z polem czasu] (http://stackoverflow.com/questions/15228132/tsql-to- add-datetime-field-with-a-time-field) –
Dzięki Ajay, za link informacyjny! Ciekawi mnie tylko, dlaczego nadal musi działać w wersji Developer Developer 2012. Pół upieczonego wypieku? :-) – tejaslakade