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:
-- 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 |
-- 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
Segundos
24442
(1 row(s) affected) |
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:
-- 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' |
-- 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'
Los resultados vuelven en un formato más agradable y fácil de leer.