首页 > 解决方案 > 在 SQL 中将持续时间转换为秒

问题描述

data在 SQL 中有这张表,它显示了用户和持续时间,但持续时间有些时间是纯秒,而有些则混合在分钟和秒之间

    User   |  Duration
--------------------------
      A    |  3:20
      B    |  :38
      CX   |  1:43
      V    |   45
      B    |  6:35
     ...   |  ....

期望输出(纯秒)

    User   |  Duration
--------------------------
      A    |  200
      B    |  38
      CX   |  103
      V    |  45
      B    |  395
     ...   |  ...

我一直在 SQL 中尝试不同的函数,但还没有找到一个同时适用于分钟部分和秒部分的函数

标签: sqlsql-server

解决方案


一种方法是将字符串转换为时间类型,然后使用时间算术:

select datediff(second, 0, cast('00:' + right('0' + duration, 5) as time))

另一种方法仅使用字符串和数字操作:

select cast(left(duration, charindex(':', t) - 1) as int)*60 + cast(right(duration, 2) as int)

推荐阅读