2016-09-26 3 views
1

У меня есть два значения времени, какВремя добавления в Sql Server

Time1=23:59:59:999 
Time2=23:59:59:999 

, когда я сложить эти два времени (Time1 + TIME2) и я хочу результат будет 47:59:58, а не 23:59: 58.

Как я могу это сделать? пожалуйста, предложите !!

+0

пожалуйста, отметьте версию сервера sql, с которой вы используете – TheGameiswar

+0

Нет данных типа sql server может иметь значение '47: 59: 58'. Типы символов могут иметь значение ''47: 59: 58''. Так что сделайте свою математику datetime и конвертируйте в varchar по-своему. – Serg

+1

47:59:58 недействительный DateTime в SQL - то, с чем вы работаете, больше похоже на промежуток времени - если в нем нет новой версии SQL с типом timespan, обычная мудрость, похоже, заключается в том, чтобы хранить секунды, миллисекунды или тики как bigint и использовать функции преобразования – Cato

ответ

0

На самом деле, это действительно сложно в SQL Server. Как насчет '1 23:59:58'? Если это так:

select cast(time1 as datetime) + time2 

Если вы действительно хотите формат в ЧЧ: ММ: СС, то вам нужно будет сделать много манипуляций со строками.

1

Давайте посмотрим на сроки и продолжительность:

  • DateTime это момент времени, скажем, 28 июня 1978 в 15:23.
  • A время без даты является повторяющимся моментом времени, например. «Я встаю каждый день в 7:00». (Это то, что вы используете. Но я встаю в 8:00, а спать в 23:00 не делает 8 + 23 = 31. Нет смысла добавлять время.)
  • Тогда есть timespan (например, с 2016-01-01 3:00 до 2016-01-02 13:00).
  • И есть продолжительность (например, шесть минут). Это то, с чем вы хотите справиться.

Вы сохраняете продолжительность за раз, что на самом деле не является подходящим типом данных. Поскольку SQL Server не предоставляет специальный тип данных в течение продолжительности, вы можете использовать для этого числовой тип и хранить секунды или микросекунды или все, что вам кажется нужным. Их можно легко добавить (если оба значения имеют один и тот же блок, например, микросекунды).

Что касается отображения продолжительности, вы можете написать функцию, предоставляющую вам наиболее подходящий вам формат (например, «913 дней, 9 часов, 5 минут и 55,123 секунды»).

Смежные вопросы