sql - 将 HH:MM:SS 的 varchar 转换为分钟值
问题描述
使用 SQL Server,我有一列varchar
数据来自另一个源,格式为伪 HH:MM:SS 字符串,表示持续时间,例如:
Duration
HH:MM:SS
00:43:46
01:30:06
43:56:38
89:24:00
5890:01:00
我想将它转换int
为每个简单的分钟 () 值
Duration MinuteDuration
HH:MM:SS mm
00:43:46 43
01:30:06 90
43:56:38 2636
89:24:00 5364
5890:01:00 353401
我环顾了一下stackoverflow,发现有几个人建议使用时间参数进行转换
USE [MyDB]
GO
SELECT [User],
[Duration],
(SELECT CONVERT(TIME, Duration, 8)) as DurationMinutes,
FROM [dbo].[MyTable]
GO
但我不能使用它,因为我的小时值可能大于 24/12(我的小时值可能是数千)。由于原始数据在 a 中varchar
,我需要先解释字符串,然后将小时乘以 60* 并将其添加到分钟值(并且只需删除秒值)。
解决方案
虽然解析时间组件绝对是可能的,但字符串操作也非常简单:
select duration,
(convert(int, left(duration, charindex(':', duration) - 1)) * 60 +
convert(int, left(right(duration, 5), 2))
)
from t;
这是一个 db<>fiddle。
推荐阅读
- docker - 通过 docker 部署时无法在 Heroku 应用程序中处理 SIGTERM
- wso2ei - XPath 的评估导致错误
- fpga - 使用 OpenOCD 闪存/运行 Altera Cyclone IV
- swiftui - swiftui ObservedObject 函数在所有视图中调用
- php - 应用程序逻辑是否应该有权访问存储库?
- r - 如何从 R 数据框的两列中联合采样?
- r - Rstudios sarima 只显示地块
- bluetooth-lowenergy - 在 iOS 中监听多个连接的 BLE 设备的特征值变化
- ruby-on-rails - 更新模型的所有道具
- python - 在 UI 上为 QLineEdit 的内容加下划线