2013-06-24 39 views
1

我要添加24格式小时,然后结果将是或者24格式或12小时格式按照我的要求我将使用两个函数如何在SQL Server 2005中添加和减去小时数?

这是我的例子

加载('08:05“+” 02:00' )的结果是10:05

现在又来我想上面的结果转换成12小时制,以便按我的结果,这将是10:05 AM或10:05

+2

你需要在这里TIFF很谨慎。 2005年只有一种数据类型支持日期时间值,这就是'datetime'。即使在2008年,“日期时间2”和“时间”都存在 - 在所有3种情况下,“时间”是一天的*时间*,而不是*时间跨度*。这些实际上是两个不同的概念。将两天*时间加在一起并没有什么意义,如果你24小时溢出,你会遇到问题。最好使用对TimeSpan类型具有一流支持的语言(例如C#)。 –

回答

3

您可以使用例如,DateAdd函数可以做到这一点Dateadd(hour,2, @yourTime)
要显示结果,可以使用convert函数。 convert函数有很多格式选项,所以选择一个适合您的需求(我猜'0'会好的)。

实施例:

select convert(varchar, dateadd(hour,2,myTimeColumn),0) as PlusTwoHours 
from myTable. 

提示:避免在SQL格式。我会建议删除convert部分,并在你的应用程序(报表引擎,Excel或其他)中进行格式化。

+0

时间不是固定的,它会来自数据库它是动态的 – user2477936

+0

差异在哪里?我会添加一个例子。 – alzaimar

0
DECLARE @TimeValueA as DateTime 
DECLARE @TimeIncrementHours as int 

SET @TimeValueA = '10:05:000' 

SET @TimeIncrementHours = 2 


SELECT dateadd(hour,@TimeIncrementHours, @TimeValueA) 

检查,看看如果时间是12小时或24小时使用convert函数像这样一个varchar:

24小时

SELECT CONVERT(varchar, dateadd(hour,@TimeIncrementHours, @TimeValueA),108) 

或12小时

SELECT CONVERT(varchar(20), dateadd(hour,@TimeIncrementHours, @TimeValueA),100) 

在您想添加两个DateTime的情况下

SELECT CONVERT(日期时间,'10:00:000' )+ CONVERT(日期时间, '2:10:000')

+0

SET @TimeIncrementHours = 2这里的时间是'02:10:00'小时和分钟,所以我怎样才能把这个添加到'10:05:00' – user2477936

+0

在上面的编辑中添加了如何添加10: 05 + 02:10 –