如何在 SQL 中将小时、分钟和秒 (HH:mm:ss) 转换为分钟和秒 (mm:ss)

Posted

技术标签:

【中文标题】如何在 SQL 中将小时、分钟和秒 (HH:mm:ss) 转换为分钟和秒 (mm:ss)【英文标题】:How to Convert Hours, minutes and seconds (HH:mm:ss) to minutes and seconds (mm:ss) in SQL 【发布时间】:2021-09-07 04:00:39 【问题描述】:

假设我有 2 小时、47 分钟和 10 秒 (02:47:10),它采用 hh:mm:ss 格式作为时间列中的值。我只想将其转换为分钟和秒(mm:ss)。 因此,sql 中的结果应该是 167 分钟和 10 秒。 我试过使用代码

SELECT cast(substring('02:47:10',1,2) AS int)*60+
       cast(substring('02:47:10',4,2) AS int)+ 
       cast(substring('02:47:10',7,2) AS int)/60.0 AS minutes

结果是 167.166666。

我想要的输出应该是 167:10 (mm:ss) 格式

【问题讨论】:

【参考方案1】:

也许是一种更轻松的方法,更少的字符串操作

示例

Declare @T time = '02:47:10'

Select concat(datediff(MINUTE,0,@T),':',datepart(second,@T))

结果

167:10

【讨论】:

【参考方案2】:

只需将小时乘以 60,然后将其添加到分钟即可。然后重新格式化为类似时间的值:

SELECT CONCAT((DATEPART(HOUR,'02:47:10')* 60) + DATEPART(MINUTE,'02:47:10'),':',DATEPART(SECOND,'02:47:10'));

【讨论】:

【参考方案3】:

修改了你的表达

SELECT cast (cast(substring('02:47:10',1,2) AS int) * 60 +
             cast(substring('02:47:10',4,2) AS int) as varchar(10)) + ':' +
       substring('02:47:10',7,2) AS minutes

【讨论】:

以上是关于如何在 SQL 中将小时、分钟和秒 (HH:mm:ss) 转换为分钟和秒 (mm:ss)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Oracle 中将毫秒转换为 hh mm ss 格式

在 Python 中将秒转换为天、小时、分钟和秒 [关闭]

在 Excel 中将时间格式化为天、小时、分钟和秒的更好方法?

在 ZonedDateTime 或 Instant 中将小时分钟和秒设置为 00

如何在 SQL 中的日期时间列中添加小时、分钟和秒?

如何将秒转换为小时、分钟和秒?