是否有一种简洁的格式化整数的方法,它是一个整数分钟的计数,分为小时和分钟的十进制表示.很遗憾T-SQL中没有Timespan这样的东西来支持这一点.
为了清楚我的意思是,如果我有70分钟,我想把它转换成1小时10分钟的表示即1.10.我还想将它保存为varchar或其他东西,以确保尾随零保持不变.
无论如何,这可以在SQL中创建为自定义函数,以便可以从不同的查询中重用它?
lc.*_*lc. 17
要获得小时数,你想要除以60.要获得剩余的分钟数,你要么采用总分钟模数60或者总分钟数和小时数之间的差值60.要使余数显示在右边的小数位,除以100.0:
SELECT minutes / 60 + (minutes % 60) / 100.0 ...
Run Code Online (Sandbox Code Playgroud)
请注意,你将失去尾随零和恕我直言存储持续时间这种方式是一个坏主意,因为a)你不能用它做更多的数学和b)有人在他们稍后看这个代码时会感到困惑.
你最好使用如下的字符串表示(我建议再次使用':'而不是'.'来表示这不是一个数字):
SELECT CAST((minutes / 60) AS VARCHAR(8)) + ':' +
RIGHT('0' + CAST((minutes % 60) AS VARCHAR(2)), 2) ...
Run Code Online (Sandbox Code Playgroud)
至于创建自定义函数,您可以创建存储过程,然后从其他代码调用它.请注意,必须在每个数据库中创建存储过程.
不确定使存储过程值得付出努力,除非你想要更漂亮并返回类似TimeSpan的行.