Étant donné les composants suivants
DECLARE @D DATE = '2013-10-13'
DECLARE @T TIME(7) = '23:59:59.9999999'
Quel est le meilleur moyen de les combiner pour produire un DATETIME2(7)
résultat avec de la valeur '2013-10-13 23:59:59.9999999'
?
Certaines choses qui ne fonctionnent pas sont énumérées ci-dessous.
SELECT @D + @T
La date du type de données d'opérande n'est pas valide pour l'opérateur add.
SELECT CAST(@D AS DATETIME2(7)) + @T
Le type de données d'opérande datetime2 n'est pas valide pour l'opérateur add.
SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D)
La fonction de datiff a entraîné un débordement. Le nombre de dates séparant deux instances de date / heure est trop grand. Essayez d’utiliser datiff avec une date moins précise.
* Le dépassement de capacité peut être évité dans Azure SQL Database et SQL Server 2016, à l'aide de DATEDIFF_BIG
.
SELECT CAST(@D AS DATETIME) + @T
Les types de données date / heure et heure sont incompatibles dans l'opérateur d'ajout.
SELECT CAST(@D AS DATETIME) + CAST(@T AS DATETIME)
Retourne un résultat mais perd de la précision
2013-10-13 23:59:59.997