计算 SQL 中的时差

Calculate time difference in SQL

我们在 SQL 中有两列。一个是 total_work_time,下一个是 total_exeption_time,两个列的数据类型都是 varchar

total_work_time 值为 07:15:00

total_exeption_time 值为 01:15:00

所以我需要减去 total_work_time - total_exeption_time 结果将是 06:00:00.

我试过 concat(DATEDIFF(HOUR,total_exeption_time,total_work_time),':', DATEDIFF(MINUTE,total_exeption_time,total_work_time))

但结果是6:360。由此看来,360 是问题所在,总共花费了几分钟。我需要像 06:00:00 这样的结果结构。如何使用 SQL 服务器解决此问题。

您应该将时间值存储在 TIME 数据类型中 - 使用正确的数据类型不仅是最佳实践,而且会减少您将来面临的问题。

您可以将 VARCHAR 值转换为 TIME,然后使用以下计算以秒为单位计算差值(假设您感兴趣的最低单位)并创建一个新的 TIME 结果。

DECLARE @total_work_time TIME = '07:15:00', @total_exeption_time TIME = '01:15:00';

SELECT CONVERT(TIME, DATEADD(SECOND, DATEDIFF(SECOND, @total_exeption_time, @total_work_time), '00:00'));