2015-02-23 4 views
0

Я пытаюсь получить общую сумму разницы во времени из двух временных меток столбцов (DateTime)Разница в минутах от DateTime

я в настоящее время Таблица 1 установки, как следующее в:

  • Time_Line_Down => DateTime
  • Time_Line_Ran => DateTime
  • Total_Downtime => Компьютерная колонка с формулой:

    (случай, когда [Time_Line_Down] IS NULL, то NULL еще CONVERT ([VARCHAR], случай, когда [Time_Line_Ran] IS NULL, то NULL еще [Time_Line_Ran] - [Time_Line_Down] конец, (108)) конец)

Каждый раз, когда происходит какое-то условие, я копирую эти три колонок (у меня есть несколько столбцов, но проблема на этом из них) в другую таблицы 2 первоначально установка, как в следующем:

  • Time_Line_Down => DateTime
  • Time_Line_Ran => Дата и время
  • Total_Downtime => Дата и время

Я затем использовать таблицу Excel для «Внешние данные» из SQL Server и использовать сводную таблицу для работы с данными.

Пример

  • Time_Line_Down = 2015-02-20 12: 32: 40,000
  • Time_Line_Ran = 2015-02-20 12: 34: 40,000
  • Total_Downtime = 1900-01-01 00:02:00.000

Желаемой Выход

Я хочу сводную таблицу, чтобы быть в состоянии дать мне суммарный итог простоя из всех строк в этой таблице

Скажут, это было сорок пять часов, пятьдесят минуты и тридцать секунд накопленного простоя следует читать как (45:50:30)

проблемы:

Даже если я форматировать Total_Downtime столбец в сводной таблице, как первенствовать h:mm:ss читать следующим образом:

  • Total_Downtime = 0:02:00

В строки накапливаются и Гранд Общее рассчитывается «Дата» часть метки времени Мессинг результата является сумма превышает 24 часа

То, что я пытался

Я изменил формат данных в столбце Total_Downtime в Таблица 2 на время (0), так что он не отправит часть «Дата», только часть времени «Время» в метке времени, она работает и считывает 00:02:00

Но теперь все значения в моей сводной таблице в excel для этого столбца равны 0:00:00 независимо от того, какое значение действительно находится в таблице SQL.

Любые предложения?

+0

Я бы не изменил ваш тип данных во времени. Почти невозможно определить время, когда два пересекают границу дат. У вас есть только 3 части данных, о которых вы заботитесь, прежде всего, о датиффе в течение нескольких часов, а затем о датах для минут mod 60, чтобы получить минута, и, наконец, датированные секунды mod 60, чтобы получить секунды. Должно быть довольно прямолинейно. –

ответ

1

Вы можете использовать формат времени Excel [h]:mm:ss, который может превышать 24 часа.

В качестве альтернативы вы можете использовать функцию SQL DATEDIFF, чтобы получить общее время простоя в секундах, а затем преобразовать ее, однако вам нужно отобразить ее в Excel, например.

case when [Time_Line_Down] IS NULL then NULL else case when [Time_Line_Ran] IS NULL then NULL else datediff(ss, Time_Line_Ran, Time_Line_Down) end end 

Я не думаю, что вам нужно CASE заявления здесь, вы можете просто использовать

datediff(ss, Time_Line_Ran, Time_Line_Down) 
+0

Спасибо за быстрый ответ, изменение формата времени в excel не дало ожидаемых результатов с тех пор, пока я показываю такие значения, как 5774: 11: 47 .. Я предполагаю, что это связано с частью «Дата». В настоящее время я тестирую с помощью функции SQL DATEDIFF, как и вы, и Шон Ланге, я дам вам знать результаты. Вы правы, оператор case должен просто не вычислять Total_Downtime, если метки времени отсутствуют в столбцах Time_Line_Ran и Time_Line_Down, в основном из-за моего приложения. –

0

Спасибо всем за вашу помощь,

Я пошел вперед попробовал функцию DATEDIFF как Я изменил Таблица 1 вычисленная формула столбца и Таблица 2 Тип данных столбца Total_Downtime для int. После импорта в excel это числовое значение потребовало дополнительных вычислений.

В принципе это лучший ответ и должен работать для тех, кто пытается рассчитать разницу между двумя временными метками, как упоминалось ранее, довольно прямолинейно.

Но в моей ситуации мне нужно, чтобы сохранить две вещи:

1) Формат 00:00:00 для столбца Total_Downtime в таблице 1, которые изменили до целого значения при использовании DATEDIFF

2) сводная таблица Total_Downtime формат столбец [ч]: мм: сс (предложенный TobyLL) в Excel, который требует несколько вычислений для преобразования секунд

Solution

Узнав, что каждый раз, когда я копировал из Таблица 1 на Таблица 2 вычисленное значение (например, 00:02:00) изменился на 1900-01-01 00: 02: 00.000, а при импорте в Excel он равнялся 1.001388889, я решил принудительно установить часть «Дата» отметки времени 1899-12-31, поэтому что Excel будет вычислять только сумму Grand в сводной таблице с помощью «Time» (десятичной) части.

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