select STUFF(
STUFF(RIGHT('000000' + CAST([run_duration] AS VARCHAR(6)), 6)
, 3, 0, ':')
, 6, 0, ':')
AS [LastRunDuration (HH:MM:SS)]
from sysjobhistory
我上面给出的查询工作正常,但我试图更清楚地理解它。我的观察是:
- 首先,我们将运行持续时间转换
varchar
为长度为 6 的 and,并在其右侧附加六个 0,如果它是10
then00000010
- 在我们使用 stuff 函数将其插入
:
到这里之后,它位于第 3 个位置,所以上面的变成了00:000010
- 我们再次使用 stuff 将
:
符号插入到第六个位置,这样它就变成了00:00:0010
但是当我运行查询时,如果有一个值10
,它显示为00:00:10
.
怎么可能?
在您的第一个项目符号中,您说该值变为 00000010。这是不正确的。由于 RIGHT( , 6),它实际上变为 000010。
为了澄清,比较差异:
结果: