Foros del Web » Programando para Internet » PHP »

Operaciónes con datos distinta fecha

Estas en el tema de Operaciónes con datos distinta fecha en el foro de PHP en Foros del Web. Buenas foreros, estoy desarrollando una aplicación con PHP y PostgreSQL y me ha surgido una duda. Trabajo con contadores a partir de los cuales necesito ...
  #1 (permalink)  
Antiguo 17/02/2014, 05:34
 
Fecha de Ingreso: febrero-2014
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Operaciónes con datos distinta fecha

Buenas foreros,

estoy desarrollando una aplicación con PHP y PostgreSQL y me ha surgido una duda.
Trabajo con contadores a partir de los cuales necesito calcular el valor diario restando el valor de hoy con el de ayer.
Quyiero automatizar este cálculo en PHP, es decir, introducir el valor del contador que se realice un cálculo con ese dato e inserte el valor calculado en el campo determinado.

contadorhoy-contadorayer=valor a insertar


¿Cómo puedo hacer esto con PHP?

GRacias.

Última edición por emiliosjlc; 17/02/2014 a las 05:41
  #2 (permalink)  
Antiguo 17/02/2014, 06:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Operaciónes con datos distinta fecha

Los campos calculados son mala cosa en una buena base de datos relacional.....

Lo que pides se puede calcular con una query y lo mejor es no guardar el resultado en ninguna parte de la bbdd...

Código MySQL:
Ver original
  1. SELECT Min(fecha) Ayer,
  2.              MAX(if(fecha=DATE_SUB(DATE(NOW()) INTERVAL 1 DAY) ,contador,0) ContadorAyer,
  3.              MAX(fecha) Hoy,
  4.              MAX(if(fecha=DATE(NOW()),contador,0)) ContadorHoy,
  5.              MAX(if(fecha=DATE(NOW()),contador,0))-MAX(if(fecha=DATE_SUB(DATE(NOW()) INTERVAL 1 DAY) ,contador,0) Diferencia
  6. FROM tuTabla
  7. WHERE fecha>=DATE_SUB(DATE(NOW()) INTERVAL 1 DAY) and fecha<=DATE(NOW());

Si guardas el resultado y posteriormente hay un cambio en los registros de tuTabla y no haces la actualización del campo calculado vas a tener la bbdd en un estado incoherente. Por muy bien que programes siempre puede haber un error de ejecución por el que no se realice la operación de actualización del campo calculado....

Ya que siempre lo puedes calcular para que guardarlo!
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 17/02/2014 a las 06:55
  #3 (permalink)  
Antiguo 18/02/2014, 05:28
 
Fecha de Ingreso: febrero-2014
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Operaciónes con datos distinta fecha

Es una característica que debe contemplar, debo tener almacenado el contador y el valor calculado.

Cómo resolverías este problema sin BBDD relacional?

GRacias
  #4 (permalink)  
Antiguo 18/02/2014, 06:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Operaciónes con datos distinta fecha

Código MySQL:
Ver original
  1. INSERT INTO tablaContadores
  2.  
  3. SELECT Min(fecha) Ayer,
  4.              MAX(if(fecha=DATE_SUB(DATE(NOW()) INTERVAL 1 DAY) ,contador,0) ContadorAyer,
  5.              MAX(fecha) Hoy,
  6.              MAX(if(fecha=DATE(NOW()),contador,0)) ContadorHoy,
  7.              MAX(if(fecha=DATE(NOW()),contador,0))-MAX(if(fecha=DATE_SUB(DATE(NOW()) INTERVAL 1 DAY) ,contador,0) Diferencia
  8. FROM tuTabla
  9. WHERE fecha>=DATE_SUB(DATE(NOW()) INTERVAL 1 DAY) and fecha<=DATE(NOW());

Pues guardando el dato que la la query. Pero el problema o peligro de incoherencia de la bbdd subsiste.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: distinta, fecha, sql
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 12:08.