true DateTime値を計算するために、LAST_DT(smalldatetimeとして提供されますがhhmmssなし)とLAST_TM(nvarcharとして提供)を追加する必要があります。
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