在 SQL 内将小时转换为分钟

Converting hours into minutes in SQL

我正在尝试编写一个将小时数转换为分钟数的正则表达式。 目前我有一个值,它给出了点之前的小时数和点之后的分钟数,例如 6.10 是 6 小时 10 分钟。

我可以使用正则表达式查找点之前的值并乘以 60(得到分钟),然后加上点之后的值(已经以分钟为单位)吗?

所以按照之前使用的例子,它会做: (6 * 60) + 10

谢谢!

如果您的值“6.10”存储为字符串,请先将其转换为数字:

SET @Input = CAST(@InputString AS FLOAT)

然后,使用Modulus and Floor

总分钟数=小数部分*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)