I have the following query:
SELECT BELNR_ID
,BELPOS_ID
,DocDate
,AUFTRAG
,APLATZ_ID
,CONVERT(VARCHAR(10), ANFZEIT, 103) AS 'Fecha Inicio'
,RIGHT(ANFZEIT, 7) AS 'Hora Inicio'
,CONVERT(VARCHAR(10), ENDZEIT, 103) AS 'Fecha Fin'
,RIGHT(ENDZEIT, 7) AS 'Hora fin'
,ABS(DATEDIFF(minute, RIGHT(ANFZEIT, 7), RIGHT(ENDZEIT, 7))) AS 'MinutosTranscurridos'
,ZEIT
,LEFT(APLATZ_ID, 5) AS 'Maquina'
,LEFT(AUFTRAG, 2) AS 'Turno'
FROM BEAS_ARBZEIT
Where I am occupying
ABS(DATEDIFF(minute, RIGHT(ANFZEIT, 7), RIGHT(ENDZEIT, 7))) as 'MinutosTranscurridos'
ABS
to convert the data to positive and the DATEDIFF
to get the minutes elapsed, but I have a small detail.
When the range is within the same day during the 24 hours it sends me the correct range of minutes elapsed, but when the range covers two days it sends me a wrong time.
Examples:
19/04/2017 1:00AM 19/04/2017 6:00AM 300 MIN "esto es ok" 18/04/2017 10:00PM 19/04/2017 1:00AM 1260 MIN "ESTO NO ESTA BIEN"
Update based on the responses received
I am restructuring the query with something similar to what it says @Patricio Moracho I am restructuring the query with something similar to what @Patricio Moracho comments
DECLARE @ANFZEIT DATETIME
DECLARE @ENDZEIT DATETIME
SET @ANFZEIT = 'select ANFZEIT from BEAS_ARBZEIT';
SET @ENDZEIT = 'select ENDZEIT from BEAS_ARBZEIT';
select BELNR_ID,BELPOS_ID,DocDate,AUFTRAG,APLATZ_ID,
CONVERT(VARCHAR(10),ANFZEIT,103) AS 'Fecha Inicio',
RIGHT(ANFZEIT, 7) AS 'Hora Inicio',
CONVERT(VARCHAR(10),ENDZEIT,103) AS 'Fecha Fin',
RIGHT(ENDZEIT, 7) AS 'Hora fin',
DATEDIFF(MINUTE,@ANFZEIT,@ENDZEIT) as 'MinutosTranscurridos',
ZEIT,LEFT(APLATZ_ID,5) AS 'Maquina',LEFT(AUFTRAG,2) AS 'Turno' from BEAS_ARBZEIT
but this error marks me
La conversión falló al convertir la fecha y / o el tiempo de una cadena de caracteres.