SQL - queri de minutos trascurridos

 
Vista:
Imágen de perfil de Antonio
Val: 30
Ha aumentado su posición en 3 puestos en SQL (en relación al último mes)
Gráfica de SQL

queri de minutos trascurridos

Publicado por Antonio (30 intervenciones) el 19/04/2017 16:13:51
hola a todos


tengo la siguiente consulta
1
2
3
4
5
6
7
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


donde estoy ocupando

ABS(DATEDIFF(minute, RIGHT(ANFZEIT, 7), RIGHT(ENDZEIT, 7))) as 'MinutosTranscurridos'

ABS para convertir a positivo los datos y el DATEDIFF para sacar los minutos trascurridospero tengo un pequeño detalle.

cuando el rango es dentro del mismo dia durante las 24 horas si me manda el rango correcto de minutos transcurridos

pero cuando el rango habarca dos dias me manda un rato erroneo

ejemplos:

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"
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

queri de minutos trascurridos

Publicado por leonardo_josue (1173 intervenciones) el 19/04/2017 17:23:03
Hola Antonio:

¿Con qué motor de BD's estás trabajando? aunque la mayoría de ellos se basa en un SQL Estándar, hay diferencias sintácticas muy importantes entre cada uno de ellos, sobre todo en el manejo de fechas (cómo es el caso)

Adicionalmente, postea cual es la estructura de tu tabla, dinos de qué tipo son tus campos (porque sospecho que puedes estar guardando algunas fechas como VARCHAR) y pon algunos datos de ejemplo.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antonio
Val: 30
Ha aumentado su posición en 3 puestos en SQL (en relación al último mes)
Gráfica de SQL

queri de minutos trascurridos

Publicado por Antonio (30 intervenciones) el 19/04/2017 18:52:48
es SQL estandar y las fechas son datetime

cambie el query por este:

1
2
3
4
5
6
7
8
9
10
11
DECLARE @ANFZEIT varchar(30)
DECLARE @ENDZEIT varchar(30)
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,CAST(@ANFZEIT  as datetime),CAST(@ENDZEIT  as datetime)) as 'MinutosTranscurridos',
		ZEIT,LEFT(APLATZ_ID,5) AS 'Maquina',LEFT(AUFTRAG,2) AS 'Turno' from BEAS_ARBZEIT

pero me marca este error

La conversión falló al convertir la fecha y / o el tiempo de una cadena de caracteres.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

queri de minutos trascurridos

Publicado por Isaias (1921 intervenciones) el 19/04/2017 19:10:24
Tal vez suene a insistente, ¿Con que motor de base de datos?

Oracle
SQL Server
MySQL
Informix
DB2

¿Cual?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antonio
Val: 30
Ha aumentado su posición en 3 puestos en SQL (en relación al último mes)
Gráfica de SQL

queri de minutos trascurridos

Publicado por Antonio (30 intervenciones) el 19/04/2017 21:50:09
sql server es el que estoy utilisando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

queri de minutos trascurridos

Publicado por leonardo_josue (1173 intervenciones) el 20/04/2017 16:44:31
Hola de nuevo Antonio:

Si tus campos son de tipo datetime, entonces no veo por qué razón estás haciendo tantas conversiones y particiones pudiendo utilizar directamente los campos, además, el error que mencionas creo que está más bien en la información: ejecuta esta consulta:

1
2
3
4
5
6
7
8
9
10
SELECT
  fecha1,
  fecha2,
  datediff(minute, fecha1, fecha2) diferencia
FROM
( SELECT '2017-04-19 01:00:00' fecha1, '2017-04-19 06:00:00' fecha2
  UNION
  SELECT '2017-04-18 22:00:00' fecha1, '2017-04-19 01:00:00' fecha2
  UNION
  SELECT '2017-04-18 22:00:00' fecha1, '2017-04-18 01:00:00' fecha2 ) T;
Aquí se obtienen los siguientes resultados:

1
2
3
4
5
6
7
8
9
+-------------------+-------------------+----------+
|fecha1             |fecha2             |diferencia|
+-------------------+-------------------+----------+
|2017-04-19 01:00:00|2017-04-19 06:00:00|       300|
+-------------------+-------------------+----------+
|2017-04-18 22:00:00|2017-04-19 01:00:00|       180|
+-------------------+-------------------+----------+
|2017-04-18 22:00:00|2017-04-18 01:00:00|     -1260|
+-------------------+-------------------+----------+

Por lo tanto creo que el supuesto "error" que dices es en realidad un error de datos, ocasionado con tantas conversiones que hace que no estés considerando el día correctamente para cada uno de los casos.

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar