Dados los siguientes componentes
DECLARE @D DATE = '2013-10-13'
DECLARE @T TIME(7) = '23:59:59.9999999'
¿Cuál es la mejor manera de combinarlos para producir un DATETIME2(7)
resultado con valor '2013-10-13 23:59:59.9999999'
?
Algunas cosas que no funcionan se enumeran a continuación.
SELECT @D + @T
La fecha del tipo de datos del operando no es válida para agregar operador.
SELECT CAST(@D AS DATETIME2(7)) + @T
El tipo de datos de operando datetime2 no es válido para agregar operador.
SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D)
La función dateiff resultó en un desbordamiento. El número de partes de fecha que separan dos instancias de fecha / hora es demasiado grande. Intente usar dateiff con una parte de fecha menos precisa.
* El desbordamiento se puede evitar en Azure SQL Database y SQL Server 2016, utilizando DATEDIFF_BIG
.
SELECT CAST(@D AS DATETIME) + @T
Los tipos de datos datetime y time son incompatibles en el operador add.
SELECT CAST(@D AS DATETIME) + CAST(@T AS DATETIME)
Devuelve un resultado pero pierde precisión
2013-10-13 23:59:59.997