有人可以解释原因吗
CASE
WHEN MARK = 'Y'
THEN LEFT('00000', 5-LEN(DATEDIFF(MINUTE, START, FINISH))) + DATEDIFF(MINUTE, START, FINISH)
ELSE '00000'
END AS [Time]
在0
时显示为单00000
而不是Mark <> 'Y'
,并显示35
而不是00035
(作为示例)
答案 0 :(得分:3)
我猜SQL会将它转换为整数。
此select cast('00000' as varchar)
之类的代码会根据您的意愿返回(00000,00035),但select cast('00000' as int)
会返回您的结果(0,35等)
答案 1 :(得分:0)
RIGHT('00000' + CAST(DATEDIFF(MINUTE,START,FINISH) AS VARCHAR(MAX)), 5)
答案 2 :(得分:0)
我的理解是你正在使用MSSQL服务器。如果,是,则任何变量或可空列的默认数据类型为INT