有没有一种干净而简单的方法将整数格式化为小时和分钟的十进制表示形式。非常遗憾的是,T-SQL 中没有 Timespan 这样的东西来支持这一点。
需要明确的是,如果我有 70 分钟,我想将其转换为 1 小时 10 分钟,即1.10
。我还想将其保留为 varchar 或其他形式,以确保尾随零保持在适当的位置。
无论如何,是否可以将其创建为 SQL 中的自定义函数,以便可以从不同的查询中重新使用它?
要获得小时数,您需要除以 60。要获得剩余分钟数,您需要将总分钟数 mod 60 或总分钟数与小时数之差乘以 60。为了使余数显示在小数位,除以 100.0:
SELECT minutes / 60 + (minutes % 60) / 100.0 ...
请注意,您将丢失尾随零,恕我直言,以这种方式存储持续时间是一个坏主意,因为a)您不能用它做更多的数学运算,b)当有人稍后查看此代码时会感到困惑。
您最好使用如下所示的字符串表示形式(我建议再次使用“:”而不是“.”,以表示这不是一个数字):
SELECT CAST((minutes / 60) AS VARCHAR(8)) + ':' +
RIGHT('0' + CAST((minutes % 60) AS VARCHAR(2)), 2) ...
至于创建自定义函数,您可以创建一个存储过程,然后从其他代码中调用它。请注意,必须在每个数据库中创建存储过程。
不确定创建存储过程是否值得付出努力,除非您想要更花哨并返回类似 TimeSpan 的行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)