我需要添加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