2013-06-24 1 views
1

Я хочу добавить 24 часовой формат, то результат будет либо 24 или неподдерживаемый формат 12 часов согласно моему требованию, я буду использовать две функцииКак добавить и вычесть часы в SQL Server 2005?

Это мой пример

добавить ('08: 05 «+» 2:00') результат 10:05

теперь снова я хочу, чтобы преобразовать полученный результат в 12-часовой формат так, за мой результат было бы 10:05 АМ или 10:05

+2

Вы должны быть * очень * осторожны здесь. В 2005 году существует только один тип данных для поддержки значений даты и времени, и это 'datetime'. Даже в 2008 году, где 'datetime2' и' time' существуют - во всех 3 случаях время 'является * временем дня *, а не * интервалом времени *. На самом деле это две разные концепции. Добавление двух * раз в день * вместе не имеет большого смысла, и вы столкнетесь с проблемами, если переполняете 24 часа. Было бы лучше работать на языке (например, C#), который имеет поддержку первого класса для типа TimeSpan. –

ответ

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 часа использование функции Преобразовать в VARCHAR, например так:

в течение 24 ч

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

ИЛИ 12 ч

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

В том случае, если вы хотите добавить два DateTime's

ВЫБРАТЬ CONVERT (DateTime, '10: 00: 000) + CONVERT (DateTime, '2: 10: 000')

+0

SET @TimeIncrementHours = 2 здесь время '02: 10: 00 'hrs и минуты оба, так как я могу добавить это в '10: 05: 00' – user2477936

+0

Добавили в edit выше, чтобы показать, как добавить 10: 05 + 02:10 –