РЕШЕНО
CONCAT((DATEDIFF(Minute,START_DTTM,END_DTTM)/60),'h:',
(DATEDIFF(Minute,START_DTTM,END_DTTM)%60) 'm') AS TotalTimeMissing
Выдает TotalTimeMissing: 5h: 13m
________
Я пытаюсь вернуться значение отметки времени между двумя указанными c датами для определения времени между отсутствием пакета и его обнаружением.
РЕДАКТИРОВАТЬ: Код был обновлен и теперь включает код от Сами. Я также добавил дополнительный код, который я исключил из оригинала.
Вот текущий код:
USE PACKAGE
GO
SELECT
dp.LEGACY_ID
,dp.SURNAME
,dp.FORENAME
,dp.ETHNICITY_DESCRIPTION
,dp.BIRTH_DTTM
,DATEDIFF(YY, dp.BIRTH_DTTM, GETDATE()) -
CASE
WHEN RIGHT(CONVERT(VARCHAR(6), GETDATE(), 12), 4) >=
RIGHT(CONVERT(VARCHAR(6), dp.BIRTH_DTTM, 12), 4)
THEN 0
ELSE 1
END AS [Current Age]
--^Precise age calc due to potential LL inaccuracy
,mp.DIM_PERSON_ID
,mp.MISSING_STATUS
,mp.START_DTTM
,mp.END_DTTM
,dp.LEGACY_ID
,mp.RETURN_INT_OFFERED
,mp.RETURN_INT_ACCEPTED
,mp.RETURN_INT_DATE
FROM C_S.FACT_MISSING_PACKAGE AS mp
JOIN C_S.FACT_MISSING_PACKAGE AS dp ON mp.DIM_PERSON_ID = dp.DIM_PERSON_ID
WHERE CAST (mp.START_DTTM AS DATE)
BETWEEN DATEADD(YY, -1, CAST (GETDATE() AS DATE)) AND CAST (GETDATE() AS DATE)
--^Displays all records within exactly 1 year of run date
UNION (SELECT CONCAT(Value / 3600 / 24,
' Days ',
RIGHT(CONCAT('00', Value / 3600 % 24), 2),
':',
RIGHT(CONCAT('00', Value / 60 % 60), 2),
':',
RIGHT(CONCAT('00',Value % 3600 % 60), 2)
) AS TotalTimeMissing
FROM
(
SELECT mp.DIM_PERSON_ID, DATEDIFF(Second, mp.START_DTTM, mp.END_DTTM) Value
FROM C_S.FACT_MISSING_PACKAGE AS mp
) T(Value))
ORDER BY START_DTTM ASC;
Сами получил меня почти все, но когда я запустил Приведенный выше код я получаю сообщение об ошибке в отношении UNION и T, при этом T не указывает необходимое количество столбцов. Чтобы решить эту проблему, я попытался поместить начальный раунд столбцов SELECT в оператор (SELECT CONCAT (), но он генерирует ошибки, поэтому я немного не понимаю, как это исправить?
Мне нужно вернуть все эти столбцы с дополнительным столбцом в конце как TotalTimeMissing
Спасибо