Foros del Web » Programando para Internet » PHP »

RESTA de fechas de un solo Campo

Estas en el tema de RESTA de fechas de un solo Campo en el foro de PHP en Foros del Web. Hola buenas noches Es posible realizar una RESTA de fechas de un solo Campo de una misma etapa ya sea en PHP o SQL y ...
  #1 (permalink)  
Antiguo 27/02/2009, 20:08
 
Fecha de Ingreso: noviembre-2005
Ubicación: Torreon Coahuila
Mensajes: 100
Antigüedad: 18 años, 4 meses
Puntos: 1
RESTA de fechas de un solo Campo

Hola buenas noches
Es posible realizar una RESTA de fechas de un solo Campo de una misma etapa ya sea en PHP o SQL y que te de como resultado los dias:
tabla pro_c_trabajo
Código PHP:
id  ----------- idproceso-----ctr_fecharealizacion

126 
---------- 128 --------2009-01-01 
123 
---------- 128 --------2009-01-03 
212 
---------- 129 --------2009-01-05 
935 
---------- 128 --------2009-01-10 
347 
---------- 128 --------2009-01-15 
356 
---------- 128 --------2009-01-19 
469 
---------- 252 --------2009-02-01 
489 
---------- 128 --------2009-02-06 
589 
---------- 128 --------2009-02-09 
691 
---------- 128 --------2009-02-12
962 
---------- 128 --------2009-03-12 
POR EJEMPLO EN ESTOS DATOS NECESITO RESTAR entre las fechas q le pertenecen a una etapa para ver el tiempo q se ha quedado en cada etapa...

Tomando como ejemplo los datos y que estan ya ordenados restaria:
Código:
2009-03-12 - 2009-02-12 = 30 dias
2009-02-12 - 2009-02-09 = 3 dias
2009-02-09 - 2009-02-06  = 3 dias
etc.etc.
Eh hecho resta de dias de la siguiente manera
Código PHP:
$query_fechamysql_query("SELECT TO_DAYS('$fecha')-TO_DAYS(CURDATE()) as diferencia_dias") or die("Error en Fecha"); 
Saludos...

Última edición por losporros; 28/02/2009 a las 11:05
  #2 (permalink)  
Antiguo 28/02/2009, 03:21
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 9 meses
Puntos: 10
Respuesta: RESTA de fechas de un solo Campo

Una posible solución, para cada etapa daria los dias transcurridos entre el máximo y el mínimo.

Código PHP:
$sql "SELECT to_days(diferencia) from (select etapa, date_sub(max(campo_fecha),min(campo_fecha)) diferencia from tabladatos group by etapa) tbl 
  #3 (permalink)  
Antiguo 28/02/2009, 10:52
 
Fecha de Ingreso: noviembre-2005
Ubicación: Torreon Coahuila
Mensajes: 100
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: RESTA de fechas de un solo Campo

Me sale error,falta declarar las variables de los campos o es la version de MYSQL??
Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MIN(ctr_fecharealizacion)) DIFERENCIA FROM pro_c_trabajo GROUP BY idproceso) ' at line 1
Código PHP:
$query "SELECT ";
$query.= " TO_DAYS(DIFERENCIA) FROM ";
$query.= " (SELECT idproceso, DATE_SUB(MAX(ctr_fecharealizacion),MIN(ctr_fecharealizacion)) DIFERENCIA";
$query.= " FROM pro_c_trabajo GROUP BY idproceso) pro_c_trabajo ";
$query=mysql_query($query) or die(mysql_error()); 

Saludos y gracias.

Última edición por losporros; 28/02/2009 a las 11:08
  #4 (permalink)  
Antiguo 28/02/2009, 11:39
 
Fecha de Ingreso: noviembre-2005
Ubicación: Torreon Coahuila
Mensajes: 100
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: RESTA de fechas de un solo Campo

Bueno lo logre de esta manera y lo dejo por si alguien le sirve


Cita:

id ------ id_etapa ------------ campo_fecha
1 ------- 10 ---------------- 2009-01-01
2 ------- 10 ---------------- 2009-01-10
3 ------- 10 ---------------- 2009-01-20
4 ------- 10 ---------------- 2009-01-25
5 ------- 10 ---------------- 2009-01-30
6 ------- 10 ---------------- 2009-02-01
7 ------- 9 ------------------ 2009-02-10
8 ------- 10 ---------------- 2009-02-15
9 ------- 10 ---------------- 2009-02-20
10 ------10 ---------------- 2009-02-25
Código PHP:
$query_dias" SELECT "
$query_dias.=" f1.campo_fecha, f2.campo_fecha,"
$query_dias.=" TO_DAYS(f2.campo_fecha)-TO_DAYS(f1.campo_fecha) AS diferencia_dias"
$query_dias.=" FROM tabla f1"
$query_dias.=" LEFT JOIN tabla f2 ON f1.id < f2.id"
$query_dias.=" WHERE f1.id_etapa='10' ";
$query_dias.=" AND f2.id_etapa ='10' "
$query_dias.=" GROUP BY f1.campo_fecha"
$query_dias.=" ORDER BY f1.campo_fecha ASC"
$query=mysql_query($query) or die(mysql_error());  
$total=mysql_num_rows($query);
        while (
$rs mysql_fetch_assoc($query))
            {
echo 
"<p>$rs[campo_fecha] = $rs[diferencia_dias]</p>";

            } 
Los resultados que arroja son:

Código PHP:
2009-01-10 9

2009
-01-20 10

2009
-01-25 5

2009
-01-30 5

2009
-02-01 2

2009
-02-15 14

2009
-02-20 5

2009
-02-25 

Última edición por losporros; 02/03/2009 a las 17:35
  #5 (permalink)  
Antiguo 02/03/2009, 18:14
 
Fecha de Ingreso: noviembre-2005
Ubicación: Torreon Coahuila
Mensajes: 100
Antigüedad: 18 años, 4 meses
Puntos: 1
RESTA de fechas de un solo Campo

Hola buenas noches
Es posible realizar una RESTA de fechas de un solo Campo de una misma etapa y que te de como resultado los dias:


Código HTML:
id ------ id_etapa  ------------ campo_fecha
1 ------- 10 ---------------- 2009-01-01
2 ------- 10 ---------------- 2009-01-10
3 ------- 10 ---------------- 2009-01-20
4 ------- 10 ---------------- 2009-01-25
5 ------- 10 ---------------- 2009-01-30
6 ------- 10 ---------------- 2009-02-01
7 ------- 9 ------------------ 2009-02-10
8 ------- 10 ---------------- 2009-02-15
9 ------- 10 ---------------- 2009-02-20
10 ------10 ---------------- 2009-02-25
lo hago asi

Código PHP:
query" SELECT "
query.=" f1.campo_fecha, f2.campo_fecha,"
query.=" TO_DAYS(f2.campo_fecha)-TO_DAYS(f1.campo_fecha) AS diferencia_dias"
query.=" FROM tabla f1"
query.=" LEFT JOIN tabla f2 ON f1.id < f2.id"
query.=" WHERE f1.id_etapa='10' ";
query.=" AND f2.id_etapa ='10' "
query.=" GROUP BY f1.campo_fecha"
query.=" ORDER BY f1.campo_fecha ASC"
Los resultados que arroja son:

Código PHP:
2009-01-10 9

2009
-01-20 10

2009
-01-25 5

2009
-01-30 5

2009
-02-01 2

2009
-02-15 14

2009
-02-20 5

2009
-02-25 
Pero tengo problemas cuando 2 fechas son iguales nomas me saca la resta de una sola y la otra no me la tome en cuenta, algo que le haga falta a mi consulta???[/QUOTE]

saludos.......
  #6 (permalink)  
Antiguo 03/03/2009, 00:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: RESTA de fechas de un solo Campo

Quizás agrupando por f1.id y no por la fecha...
GROUP BY f1.id
  #7 (permalink)  
Antiguo 03/03/2009, 11:41
 
Fecha de Ingreso: noviembre-2005
Ubicación: Torreon Coahuila
Mensajes: 100
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: RESTA de fechas de un solo Campo

Lo hice d eesta manera solo que no me hace la resta de las fechas , que es lo que faltaria??
Código PHP:
query_dias" SELECT DISTINCT"
query_dias.=" f1.id, f1.idproceso, f1.ctr_fecharealizacion,"
query_dias.=" TO_DAYS(f2.ctr_fecharealizacion)-TO_DAYS(f1.ctr_fecharealizacion) AS diferencia_dias";
query_dias.=" FROM  pro_c_trabajo f1"
query_dias.=" LEFT JOIN  pro_c_trabajo f2 ON f1.id=f2.id AND f1.id < f2.id"
query_dias.=" WHERE f1.idproceso='$id_proceso'";
query_dias.=" AND f1.ctr_fecharealizacion!='0000-00-00'"
query_dias.=" ORDER BY f1.ctr_fecharealizacion,f1.id, f1.idproceso ASC"

Última edición por losporros; 03/03/2009 a las 11:49
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:38.