Sql时差计算

Sql time difference calculation

我有以下数据

View_Start  View_End
5:00:00 AM   8:59:59 AM
5:00:00 AM   8:59:59 AM
5:00:00 AM   8:59:59 AM
19:00:00 PM  23:59:59 PM
12:00:00 AM  1:59:59 AM
2:00:00 AM   4:59:59 AM

考虑到上午和下午,我需要找出两列之间的时间差, 我在 sql

中这样做

这对你有用。

SELECT
  DATEPART(hh, CAST(View_End AS TIME(0))) -
  DATEPART(hh, CAST(View_Start AS TIME(0))) AS Hours,
  DATEPART(mi, CAST(View_End AS TIME(0))) -
  DATEPART(mi, CAST(View_Start AS TIME(0))) AS Minutes,
  DATEPART(ss, CAST(View_End AS TIME(0))) -
  DATEPART(ss, CAST(View_Start AS TIME(0))) AS Seconds
FROM Table1

输出:

| Hours | Minutes | Seconds |
|-------|---------|---------|
|     3 |      59 |      59 |
|     3 |      59 |      59 |
|     3 |      59 |      59 |
|     4 |      59 |      59 |
|     1 |      59 |      59 |
|     2 |      59 |      59 |

SQL Fiddle example

警告:我看到您使用的是 24 小时制的 AM/PM 表示法。我提供的示例仅在 24 小时内准确。如果您使用的是 12 小时制,则需要更高级的解决方案。

你可以使用这个:

  SELECT convert(varchar(2),FORMAT(DATEDIFF(s, @startDate, @endDate)/3600,'0#'))+':'
           +convert(varchar(2),FORMAT(DATEDIFF(s, @startDate, @endDate)%3600/60,'0#'))+':'
           +convert(varchar(2),FORMAT(DATEDIFF(s, @startDate, @endDate)%60,'0#')) AS Duration