Foros del Web » Programando para Internet » PHP »

Para Expertos Php Y Access. Problema Formato Hora.

Estas en el tema de Para Expertos Php Y Access. Problema Formato Hora. en el foro de PHP en Foros del Web. A ver si hay alguien que me pueda ayudar porque esto es un poltergeist... El caso es que tengo una aplicacion con php y grabo ...
  #1 (permalink)  
Antiguo 27/07/2005, 02:46
 
Fecha de Ingreso: abril-2002
Mensajes: 2
Antigüedad: 15 años, 8 meses
Puntos: 0
Para Expertos Php Y Access. Problema Formato Hora.

A ver si hay alguien que me pueda ayudar porque esto es un poltergeist...

El caso es que tengo una aplicacion con php y grabo los formatos de hora en access utilizando el #.
Por ejemplo:
INSERT INTO HF (ID_EMPLEADO,FECHA,HORA,SENTIDO,ID_INCIDENCIA,ID_T IPO,ID_TERMINAL) VALUES ('0002',#07/06/2005#,#00:01#,'X','0000','R','0060')

El caso es que después trabajando sobre php no hay ningún problema, pero si entro en access y hago esta consulta:

SELECT HF.Hora FROM HF WHERE (((HF.Hora)=#00:01:00#));

NO OBTENGO NINGUN RESULTADO ????

Pero lo más cachondo es que sólo me pasa con determinadas horas.
Por ejemplo:
Con las 00:00 Todo OK
Con las 00:01 Mal
Con las 00:02 Mal
Con las 00:03 Todo Ok
Con las 00:04 Mal

El caso es que si edito la fecha en access y le pongo un 0 delante ya me muestra la consulta.
El problema es al grabar la hora desde php. ALGUNA AYUDA ????

A ver si alguien me guía porque llevo varios días dandole vueltas y no se qué hacer.
Gracias y a ver si entre todos encontramos al fantasma!!
  #2 (permalink)  
Antiguo 27/07/2005, 08:00
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 15 años, 10 meses
Puntos: 8
El formato 'hora/fecha' es un invento poco 'agraciado'. Access guarda las horas como un valor doble, en el que la parte entera son días y la decimal son fracciones de día (0,5 sería medio día, es decir, 12 horas). El valor de 1 minuto es 0.04166666..., el de dos minutos es 0.0833333...,y el de tres minutos es 0.125. Los valores de 1 y dos minutos te generan un número periódico, en cambio el de tres minutos es más o menos exacto.
Php, como todo buen programa UNIX, trabaja ese valor como un entero que representa los segundos transcurridos desde no recuerdo que fastuoso día (1 de Enero de 1970, creo).
Al grabar en access una fecha desde php pueden existir diferencias de decimales que hacen que 00:02 se guarde como 2 minutos y algún milisegundo, y eso es diferente de los dos minutos literales que le metes en la consulta. Al poner el 0 delante, lo que haces en realidad es cambiar el valor y poner los dos minutos exactos.

Yo optaría por guardar las fechas en un valor "entero largo" (un int de 14), luego, al recuperarlas desde PHP les das formato. De esta manera nunca tendrás problemas de comparación...
__________________
Kelpie
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 19:04.