Dati i seguenti componenti
DECLARE @D DATE = '2013-10-13'
DECLARE @T TIME(7) = '23:59:59.9999999'
Qual è il modo migliore di combinarli per produrre un DATETIME2(7)
risultato con valore '2013-10-13 23:59:59.9999999'
?
Alcune cose che non funzionano sono elencate di seguito.
SELECT @D + @T
La data del tipo di dati dell'operando non è valida per l'operatore add.
SELECT CAST(@D AS DATETIME2(7)) + @T
Il tipo di dati dell'operando datetime2 non è valido per l'operatore add.
SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D)
La funzione dateiff ha provocato un overflow. Il numero di parti della data che separano due istanze di data / ora è troppo grande. Prova a usare datiff con un datepart meno preciso.
* È possibile evitare l'overflow nel database SQL di Azure e in SQL Server 2016 usando DATEDIFF_BIG
.
SELECT CAST(@D AS DATETIME) + @T
I tipi di dati datetime e time non sono compatibili nell'operatore add.
SELECT CAST(@D AS DATETIME) + CAST(@T AS DATETIME)
Restituisce un risultato ma perde precisione
2013-10-13 23:59:59.997