在 SQL 内将小时转换为分钟
Converting hours into minutes in SQL
我正在尝试编写一个将小时数转换为分钟数的正则表达式。
目前我有一个值,它给出了点之前的小时数和点之后的分钟数,例如 6.10 是 6 小时 10 分钟。
我可以使用正则表达式查找点之前的值并乘以 60(得到分钟),然后加上点之后的值(已经以分钟为单位)吗?
所以按照之前使用的例子,它会做:
(6 * 60) + 10
谢谢!
如果您的值“6.10”存储为字符串,请先将其转换为数字:
SET @Input = CAST(@InputString AS FLOAT)
总分钟数=小数部分*100+整数部分*60
因此,如果您的值 6.10
包含在名为 @Input 的变量中,那么您可以使用
获得您想要的值
SET @Output = (@Input % 1) * 100 + FLOOR(@Input, 0) * 60
如果它在 table 中,那么更像这样的东西是合适的:
SELECT (Input % 1) * 100 + FLOOR(Input, 0) * 60 Output
FROM Table
以上内容仅在分钟数被零填充时有效,例如6 小时 5 分钟 = 6.05。如果您改为表示没有填充的分钟(6 小时 5 分钟 = 6.5),则使用 under 建议的方法。
对于这种简单的字符串操作,正则表达式可能有点矫枉过正。您只需要使用 INDEX 函数获取点的位置,使用 SUBSTR 函数获取小时和分钟。
圆点位置:
select INDEX([yourstring], '.')
小时(点前):
select SUBSTR([yourstring], 1, INDEX([yourstring], '.') - 1)
分钟(点后):
select SUBSTR([yourstring], INDEX([yourstring], '.') + 1)
有一个 STRTOK
函数来标记字符串然后它只是:
select '12.34' as x,
cast(strtok(x,'.',1) as int) * 60 + cast(strtok(x,'.',2) as int)
我正在尝试编写一个将小时数转换为分钟数的正则表达式。 目前我有一个值,它给出了点之前的小时数和点之后的分钟数,例如 6.10 是 6 小时 10 分钟。
我可以使用正则表达式查找点之前的值并乘以 60(得到分钟),然后加上点之后的值(已经以分钟为单位)吗?
所以按照之前使用的例子,它会做: (6 * 60) + 10
谢谢!
如果您的值“6.10”存储为字符串,请先将其转换为数字:
SET @Input = CAST(@InputString AS FLOAT)
总分钟数=小数部分*100+整数部分*60
因此,如果您的值 6.10
包含在名为 @Input 的变量中,那么您可以使用
SET @Output = (@Input % 1) * 100 + FLOOR(@Input, 0) * 60
如果它在 table 中,那么更像这样的东西是合适的:
SELECT (Input % 1) * 100 + FLOOR(Input, 0) * 60 Output
FROM Table
以上内容仅在分钟数被零填充时有效,例如6 小时 5 分钟 = 6.05。如果您改为表示没有填充的分钟(6 小时 5 分钟 = 6.5),则使用 under 建议的方法。
对于这种简单的字符串操作,正则表达式可能有点矫枉过正。您只需要使用 INDEX 函数获取点的位置,使用 SUBSTR 函数获取小时和分钟。
圆点位置:
select INDEX([yourstring], '.')
小时(点前):
select SUBSTR([yourstring], 1, INDEX([yourstring], '.') - 1)
分钟(点后):
select SUBSTR([yourstring], INDEX([yourstring], '.') + 1)
有一个 STRTOK
函数来标记字符串然后它只是:
select '12.34' as x,
cast(strtok(x,'.',1) as int) * 60 + cast(strtok(x,'.',2) as int)