我需要添加LAST_DT(作爲smalldatetime提供,但沒有hhmmss)和LAST_TM(提供爲nvarchar)來計算真實的DateTime值。
我正在嘗試使用DateAdd來增加從LAST_TM提供的hhmmss的日期。 小時和分鐘添加成功,但秒被四捨五入到分鐘。 這裏是我的代碼使用DATEADD添加秒將返回一個四捨五入到分鐘的值 - 爲什麼?
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
和相應的結果
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
爲什麼秒被四捨五入到最接近的分?
(我使用的MS SQL Server 2008 R2)
請編輯您的問題,並提供了一個最小的和可重複的例子。 –
@Tim Biegeleisen我認爲我已修復,所以你可以重現它... – James