Biorąc pod uwagę następujące elementy
DECLARE @D DATE = '2013-10-13'
DECLARE @T TIME(7) = '23:59:59.9999999'
Jaki jest najlepszy sposób na połączenie ich w celu uzyskania DATETIME2(7)
wyniku o wartości '2013-10-13 23:59:59.9999999'
?
Niektóre rzeczy, które nie działają, są wymienione poniżej.
SELECT @D + @T
Data typu argumentu operand jest niepoprawna dla operatora dodawania.
SELECT CAST(@D AS DATETIME2(7)) + @T
Operand typ danych datetime2 jest niepoprawny dla operatora dodawania.
SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D)
Funkcja datowania spowodowała przepełnienie. Liczba elementów daty oddzielających dwa wystąpienia daty / godziny jest zbyt duża. Spróbuj użyć daty z mniej dokładną datą.
* Przepełnienia można uniknąć w usłudze Azure SQL Database i SQL Server 2016 za pomocą DATEDIFF_BIG
.
SELECT CAST(@D AS DATETIME) + @T
Typy danych data i godzina są niezgodne w operatorze dodawania.
SELECT CAST(@D AS DATETIME) + CAST(@T AS DATETIME)
Zwraca wynik, ale traci precyzję
2013-10-13 23:59:59.997