【发布时间】:2010-01-19 07:27:24
【问题描述】:
我有两个带时间的日期字段。它们是
1.2008-06-09 10:18:00.000
2.2008-06-10 11:20:00.000
我要在格式上找出以上两个日期的区别-
“24 小时:2 分:0 秒”
有什么方法可以在sql 2000中得到这个结果吗?
【问题讨论】:
标签: sql sql-server tsql datetime
我有两个带时间的日期字段。它们是
1.2008-06-09 10:18:00.000
2.2008-06-10 11:20:00.000
我要在格式上找出以上两个日期的区别-
“24 小时:2 分:0 秒”
有什么方法可以在sql 2000中得到这个结果吗?
【问题讨论】:
标签: sql sql-server tsql datetime
SQL Server 2000 中没有花哨的答案...
DECLARE @d1 datetime, @d2 datetime
SELECT @d1 = '2008-06-09 10:18:00.000', @d2 = '2008-06-10 11:20:00.000'
SELECT
CAST(DATEDIFF(hour, @d1, @d2) AS varchar(30)) + ' hours, ' +
CAST(DATEDIFF(minute, @d1, @d2) % 60 AS varchar(30)) + ' minutes, ' +
CAST(DATEDIFF(second, @d1, @d2) % 3600 % 60 AS varchar(30)) + ' seconds'
需要模数来去除已经计算的小时和分钟
【讨论】:
@d2 然后@d1 中的较小单位较少时,您需要考虑越界。例如,将@d2 中的分钟数更改为 15 并检查您的结果。
CAST(DATEDIFF(second, @d1, @d2)/3600 AS varchar(30)) + ' hours, ' + CAST(DATEDIFF(second, @d1, @d2)/60 % 60 AS varchar(30)) + ' minutes, ' + CAST(DATEDIFF(second, @d1, @d2) % 3600 % 60 AS varchar(30)) + ' seconds'