Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 两个日期之间的持续时间_Sql Server 2005 - Fatal编程技术网

Sql server 2005 两个日期之间的持续时间

Sql server 2005 两个日期之间的持续时间,sql-server-2005,Sql Server 2005,我需要以(hh:mm:ss)格式获取两个日期之间的持续时间 2011/05/05 11:45:02和2011/05/01 08:09:57 例如,如果我有这两个日期2011/05/05 01:18:14和2011/05/05 11:00:00,结果将是:02:18:14,据我所知,SQL(或TSQL)中没有日期时间间隔数据类型,因此实现这一点的唯一方法是手动格式化函数的结果 declare @hours as int declare @minutes as int declare @sec

我需要以(hh:mm:ss)格式获取两个日期之间的持续时间

2011/05/05 11:45:02
2011/05/01 08:09:57


例如,如果我有这两个日期
2011/05/05 01:18:14
2011/05/05 11:00:00
,结果将是:
02:18:14

,据我所知,SQL(或TSQL)中没有日期时间间隔数据类型,因此实现这一点的唯一方法是手动格式化函数的结果

 declare @hours as int
 declare @minutes as int
 declare @seconds as int
 declare @time_interval as nvarchar(10)

 set @hours =  DATEDIFF(ss,'2011/05/05 01:18:14', '2011/05/05 11:00:00') / 3600
 set @minutes = (DATEDIFF(ss,'2011/05/05 01:18:14', '2011/05/05 11:00:00') - @hours*3600)/60
 set @seconds = DATEDIFF(ss,'2011/05/05 01:18:14', '2011/05/05 11:00:00') - @hours*3600 - @minutes * 60

 set @time_interval = (cast(@hours as nvarchar) +':'+ cast(@minutes as nvarchar)+':'+ cast(@seconds as nvarchar))

print @time_interval

据我所知,SQL(或TSQL)中没有DATETIME_INTERVAL数据类型,因此实现这一点的唯一方法是手动格式化函数的结果

 declare @hours as int
 declare @minutes as int
 declare @seconds as int
 declare @time_interval as nvarchar(10)

 set @hours =  DATEDIFF(ss,'2011/05/05 01:18:14', '2011/05/05 11:00:00') / 3600
 set @minutes = (DATEDIFF(ss,'2011/05/05 01:18:14', '2011/05/05 11:00:00') - @hours*3600)/60
 set @seconds = DATEDIFF(ss,'2011/05/05 01:18:14', '2011/05/05 11:00:00') - @hours*3600 - @minutes * 60

 set @time_interval = (cast(@hours as nvarchar) +':'+ cast(@minutes as nvarchar)+':'+ cast(@seconds as nvarchar))

print @time_interval
试试这个:

declare @date1 datetime='2011/05/05 01:18:14', @date2 datetime='2011/05/05 11:00:00'
select CAST((@date2-@date1) as time(0))
以下是语句中元素的重要顺序。在其他情况下,您将获得24小时的时间。

尝试以下操作:

declare @date1 datetime='2011/05/05 01:18:14', @date2 datetime='2011/05/05 11:00:00'
select CAST((@date2-@date1) as time(0))
DECLARE @dt1 datetime

DECLARE @dt2 datetime

SELECT @dt1 = '2011-05-05 11:45:02', @dt2 = '2011-05-05 08:09:57'

SELECT CONVERT(VARCHAR(8),@dt1-@dt2,108)


-- RESULT IS : 03:35:05
下面是语句中元素的重要顺序。在其他情况下,您将获得24小时的时间

DECLARE @dt1 datetime

DECLARE @dt2 datetime

SELECT @dt1 = '2011-05-05 11:45:02', @dt2 = '2011-05-05 08:09:57'

SELECT CONVERT(VARCHAR(8),@dt1-@dt2,108)


-- RESULT IS : 03:35:05