Domanda

Dati i seguenti componenti

DECLARE @D DATE = '2013-10-13'
DECLARE @T TIME(7) = '23:59:59.9999999'

Qual è il modo migliore per combinarli per produrre un DATETIME2(7) risultato con valore '2013-10-13 23:59:59.9999999'?

Alcune cose che non I lavori sono elencati di seguito.


SELECT @D + @T 

La data del tipo di dati opera e non è valida per l'operatore aggiuntivo.


SELECT CAST(@D AS DATETIME2(7)) + @T 

Tipo di dati operand DateTime2 non è valido per l'operatore ADD.


SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D)

La funzione DateDiff ha provocato un overflow. Il numero di parti da data che separano due istanze di data/ora è troppo grande. Prova a utilizzare Datediff con una data data meno precisa.

* L'overflow può essere evitato nel database SQL di Azure e nel SQL Server 2016, utilizzando DATEDIFF_BIG.


SELECT CAST(@D AS DATETIME) + @T 

I tipi di dati DateTime e il tempo sono incompatibili 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

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top