Dados os seguintes componentes
DECLARE @D DATE = '2013-10-13'
DECLARE @T TIME(7) = '23:59:59.9999999'
Qual é a melhor maneira de combiná-los para produzir um DATETIME2(7)
resultado com valor '2013-10-13 23:59:59.9999999'
?
Algumas coisas que não funcionam estão listadas abaixo.
SELECT @D + @T
A data do tipo de dados do operando é inválida para o operador add.
SELECT CAST(@D AS DATETIME2(7)) + @T
O tipo de dados do operando datetime2 é inválido para o operador add.
SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D)
A função datatediff resultou em um estouro. O número de datas que separam duas instâncias de data / hora é muito grande. Tente usar datediff com um período menos preciso.
* O estouro pode ser evitado no Banco de Dados SQL do Azure e no SQL Server 2016, usando DATEDIFF_BIG
.
SELECT CAST(@D AS DATETIME) + @T
Os tipos de dados datetime e time são incompatíveis no operador add.
SELECT CAST(@D AS DATETIME) + CAST(@T AS DATETIME)
Retorna um resultado, mas perde precisão
2013-10-13 23:59:59.997