J'ai besoin d'ajouter LAST_DT (fourni en tant que smalldatetime mais sans hhmmss) et LAST_TM (fourni en tant que nvarchar) pour calculer une vraie valeur DateTime.
J'essaie d'utiliser DateAdd pour incrémenter la date fournie avec le hhmmss de LAST_TM. Les heures et les minutes s'ajoutent avec succès, mais les secondes sont arrondies au nombre de minutes. Voici mon codeL'ajout de secondes en utilisant DATEADD renvoie une valeur arrondie en minutes - pourquoi?
DECLARE @LAST_DT smalldatetime = '2017-10-18'
DECLARE @LAST_TM nvarchar(6) = '153954'
SELECT
@LAST_DT
,@LAST_TM
,DATEADD(minute, CAST(substring(@LAST_TM,3,2) AS INT),
DATEADD(hour, CAST(left(@LAST_TM,2) AS INT),@LAST_DT)) AS Dt_HhMm
,Right(@LAST_TM,2) As Secs
,DATEADD(second, CAST(Right(@LAST_TM,2) AS INT),
DATEADD(minute, CAST(substring(@LAST_TM,3,2) AS INT),
DATEADD(hour, CAST(left(@LAST_TM,2) AS INT),@LAST_DT))) AS Dt_HhMmSs
et les résultats correspondants
LAST_DT LAST_TM Dt_HhMm Secs Dt_HhMmSs
2017-10-18 153954 2017-10-18 15:39:00 54 2017-10-18 15:40:00
Pourquoi les secondes étant arrondies à minutes les plus proches?
(j'utilise MS SQL Server 2008 R2)
S'il vous plaît modifier votre question et de fournir un exemple minimal et reproductible. –
@Tim Biegeleisen Je pense que j'ai corrigé cela afin que vous puissiez le reproduire ... – James