A Veces necesitas HH:MM:ss
I ran into a case when I needed to display some results in the HH:MM:SS format. Todos conocemos DATEDIFF, que nos da resultados en números enteros. Usando DATEDIFF, miramos resultados como esto:
1 2 3 4 5 6 |
-- Declare dos variables de DATETIME DECLARE @START_DATE DATETIME DECLARE @END_DATE DATETIME -- Actualice las variables a los valores deseados SET @START_DATE = '2011-01-01 16:00:00' SET @END_DATE = '2011-01-01 22:47:22' SELECT DATEDIFF(second,@Start_date, @END_DATE) AS Segundos |
1 2 3 4 |
Segundos 24442 (1 row(s) affected) |
Los resultados son correctos, pero no quiero entregar esto al usuario en este formato. Busqué y encontré lo que estaba buscando en SQLServerCentral.com. Aquí está la versión final en TSQL:
1 2 3 4 5 6 7 8 9 10 11 |
-- Declare dos variables de DATETIME DECLARE @START_DATE DATETIME DECLARE @END_DATE DATETIME -- Actualice las variables a los valores deseados SET @START_DATE = '2011-01-01 16:00:00' SET @END_DATE = '2011-01-01 22:47:22'-- Usa datediff para mostrar los resultados in HH:MM:SS SELECT CONVERT(varchar(6), DATEDIFF(second, @START_DATE, @END_DATE)/3600) + ':' + RIGHT('0' + CONVERT(varchar(2), (DATEDIFF(second, @START_DATE, @END_DATE) % 3600) / 60), 2) + ':' + RIGHT('0' + CONVERT(varchar(2), DATEDIFF(second, @START_DATE, @END_DATE) % 60), 2) AS 'HH:MM:SS' |
1 2 |
HH:MM:SS 6:47:22 |
Los resultados vuelven en un formato más agradable y fácil de leer.