transcurridas operaciones minutos meses las horas fechas entre ejemplos diferencia dias con cantidad calcular sql sql-server-2005 date datediff

operaciones - diferencia en dias entre dos fechas sql server



Cómo comparar dos fechas para encontrar la diferencia horaria en SQL Server 2005, manipulación de fechas (10)

A continuación, el código se entrega en formato hh: mm.

seleccione DERECHA (IZQUIERDA (job_end- job_start, 17), 5)

Tengo dos columnas:

job_start job_end 2011-11-02 12:20:37.247 2011-11-02 13:35:14.613

¿Cómo sería posible usar T-SQL para encontrar la cantidad de tiempo sin procesar que pasó entre el inicio del trabajo y el final del trabajo?

Intenté esto:

select (job_end - job_start) from tableA

pero terminó con esto:

1900-01-01 01:14:37.367


Creo que necesitas el intervalo de tiempo entre job_start y job_end .

Prueba esto...

select SUBSTRING(CONVERT(VARCHAR(20),(job_end - job_start),120),12,8) from tableA

Terminé con esto.

01:14:37


Declare la fecha de inicio y final DECLARE @SDATE AS DATETIME

TART_DATE AS DATETIME DECLARE @END_-- Set Start and End date SET @START_DATE = GETDATE() SET @END_DATE = DATEADD(SECOND, 3910, GETDATE())

- Obtenga el resultado en HH: MI: SS: formato MMM (24H) SELECT CONVERT(VARCHAR(12), DATEADD(MS, DATEDIFF(MS, @START_DATE, @END_DATE), 0), 114) AS TimeDiff


Echa un vistazo a DATEDIFF , esto debería ser lo que estás buscando. Toma las dos fechas que está comparando, y la unidad de fecha en la que desea la diferencia (días, meses, segundos ...)


Eche el resultado como TIME y el resultado estará en formato de tiempo por la duración del intervalo.

select CAST(job_end - job_start) AS TIME(0)) from tableA


Eche un vistazo a la función DateDiff() .

-- Syntax -- DATEDIFF ( datepart , startdate , enddate ) -- Example usage SELECT DATEDIFF(DAY, GETDATE(), GETDATE() + 1) AS DayDiff SELECT DATEDIFF(MINUTE, GETDATE(), GETDATE() + 1) AS MinuteDiff SELECT DATEDIFF(SECOND, GETDATE(), GETDATE() + 1) AS SecondDiff SELECT DATEDIFF(WEEK, GETDATE(), GETDATE() + 1) AS WeekDiff SELECT DATEDIFF(HOUR, GETDATE(), GETDATE() + 1) AS HourDiff ...

Puedes verlo en acción / jugar con él aquí


Pruebe esto en el servidor Sql

SELECT start_date as firstdate,end_date as seconddate ,cast(datediff(MI,start_date,end_date)as decimal(10,3)) as minutediff ,cast(cast(cast(datediff(MI,start_date,end_date)as decimal(10,3)) / (24*60) as int ) as varchar(10)) + '' '' + ''Days'' + '' '' + cast(cast((cast(datediff(MI,start_date,end_date)as decimal(10,3)) / (24*60) - floor(cast(datediff(MI,start_date,end_date)as decimal(10,3)) / (24*60)) ) * 24 as int) as varchar(10)) + '':'' + cast( cast(((cast(datediff(MI,start_date,end_date)as decimal(10,3)) / (24*60) - floor(cast(datediff(MI,start_date,end_date)as decimal(10,3)) / (24*60)))*24 - cast(floor((cast(datediff(MI,start_date,end_date)as decimal(10,3)) / (24*60) - floor(cast(datediff(MI,start_date,end_date)as decimal(10,3)) / (24*60)))*24) as decimal)) * 60 as int) as varchar(10)) FROM [AdventureWorks2012].dbo.learndate


Puede usar la función DATEDIFF para obtener la diferencia en minutos, segundos, días, etc.

SELECT DATEDIFF(MINUTE,job_start,job_end)

MINUTE obviamente devuelve la diferencia en minutos, también puede usar DAY, HOUR, SECOND, YEAR (consulte el enlace en línea de los libros para obtener la lista completa).

Si quieres ser elegante, puedes mostrar esto de otra manera; por ejemplo, 75 minutos podrían mostrarse así: 01: 15: 00: 0

Aquí está el código para hacer eso para SQL Server 2005 y 2008

-- SQL Server 2005 SELECT CONVERT(VARCHAR(10),DATEADD(MINUTE,DATEDIFF(MINUTE,job_start,job_end),''2011-01-01 00:00:00.000''),114) -- SQL Server 2008 SELECT CAST(DATEADD(MINUTE,DATEDIFF(MINUTE,job_start,job_end),''2011-01-01 00:00:00.000'') AS TIME)


Si su base de datos es StartTime = 07:00:00 y endtime = 14:00:00 , y ambas son tipo de hora. Su consulta para obtener la diferencia horaria sería:

SELECT TIMEDIFF(Time(endtime ), Time(StartTime )) from tbl_name

Si su base de datos startDate = 2014-07-20 07:00:00 y endtime = 2014-07-20 23:00:00 , también puede usar esta consulta.


Utilicé la siguiente lógica y funcionó para mí como maravilla:

CONVERT(TIME, DATEADD(MINUTE, DATEDIFF(MINUTE, AP.Time_IN, AP.Time_OUT), 0))