Gegeben die folgenden Komponenten
DECLARE @D DATE = '2013-10-13'
DECLARE @T TIME(7) = '23:59:59.9999999'
Wie lassen sie sich am besten kombinieren, um ein DATETIME2(7)
wertvolles Ergebnis zu erzielen '2013-10-13 23:59:59.9999999'
?
Einige Dinge, die nicht funktionieren, sind unten aufgeführt.
SELECT @D + @T
Das Datum des Operandendatentyps ist für den Operator add ungültig.
SELECT CAST(@D AS DATETIME2(7)) + @T
Der Operandendatentyp datetime2 ist für den Operator add ungültig.
SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D)
Die Datediff-Funktion führte zu einem Überlauf. Die Anzahl der Datumsteile, die zwei Datums- / Uhrzeitinstanzen trennen, ist zu groß. Versuchen Sie, Datediff mit einem weniger genauen Datum zu verwenden.
* Der Überlauf kann in Azure SQL Database und SQL Server 2016 mithilfe von vermieden werden DATEDIFF_BIG
.
SELECT CAST(@D AS DATETIME) + @T
Die Datentypen datetime und time sind im Operator add nicht kompatibel.
SELECT CAST(@D AS DATETIME) + CAST(@T AS DATETIME)
Gibt ein Ergebnis zurück, verliert aber an Genauigkeit
2013-10-13 23:59:59.997