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 |
警告:我看到您使用的是 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
我有以下数据
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 |
警告:我看到您使用的是 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