Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Hora Local y NO del Servidor

Estas en el tema de Hora Local y NO del Servidor en el foro de Mysql en Foros del Web. Hola a todos...! Tengo esta consulta: Código: $query = mysql_query("SELECT * FROM documentos_actas WHERE (lastupdate BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW())"); Pero NOW() toma ...
  #1 (permalink)  
Antiguo 16/05/2011, 10:05
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Hora Local y NO del Servidor

Hola a todos...!

Tengo esta consulta:

Código:
$query = mysql_query("SELECT * FROM documentos_actas 
WHERE (lastupdate BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW())");
Pero NOW() toma la hora del Servidor y quiciera que me tome la hora local.

He leido el manual, también otras fuentes y creo que podría hacerse con:

Código:
SELECT @ @global.time_zone , @ @session.time_zone ;
pero no logro poder aplicarlo!

Por favor, alguien puede ayudar u orientar?
  #2 (permalink)  
Antiguo 16/05/2011, 10:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Hora Local y NO del Servidor

En que entorno estas trabajando... si es una aplicacion web lo mas facil es que desde javascript obtengas la hora del cliente y la mandes por get al script del lado servidor y que este la use para construir la query.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 16/05/2011, 10:23
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Hora Local y NO del Servidor

Con la consulta muestro los registros nuevos y actualizados en los últimos 7 días y quiciera que NOW() tome una cierta zona horaria... pero me toma la del Servidor que es en EE.UU. y está 2 horas por debajo de mi zona horaria.
  #4 (permalink)  
Antiguo 17/05/2011, 00:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Hora Local y NO del Servidor

Si tomas la hora del cliente esta puede ser cualquiera.... si siempre quieres una zona horaria fija siempre que no te cambien la del servidor puedes sumar o restar horas a la del servidor... cuidado con los cambios de hora de verano/invierno.

12.5. Funciones de fecha y hora
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 18/05/2011, 22:46
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Hora Local y NO del Servidor

Hola quimfv...

Bien, he leido el manual y no logro sumarle horas al servidor.

En el caso mio, "NOW" toma la hora del servidor... ¿pero como logro sumarle horas a "NOW"?

¿Por favor, puede ser algún ejemplo?
  #6 (permalink)  
Antiguo 19/05/2011, 01:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Hora Local y NO del Servidor

Cita:
ADDTIME(expr,expr2)

ADDTIME() añade expr2 a expr y retorna el resultado. expr es una expresión de fecha u hora y fecha, y expr2 es una expresión temporal.

mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999',
-> '1 1:1:1.000002');
-> '1998-01-02 01:01:01.000001'
mysql> SELECT ADDTIME('01:00:00.999999', '02:00:00.999998');
-> '03:00:01.999997'

Si esto

SELECT ADDTIME('1997-12-31 23:59:59.999999',
-> '1 1:1:1.000002');
-> '1998-01-02 01:01:01.000001'

le suma un dia, una hora, un minuto y un segundo a '1997-12-31 23:59:59.999999' -> '1998-01-02 01:01:01.000001'

Esto ?

SELECT ADDTIME(NOW(), '1 1:1:1.000002');

Luego en cualquier sitio donde ponias NOW() tienes que poner ADDTIME(NOW(), 'X'). X horas a sumar en el formato adecuado.

Estas seguro que en el campo "lastupdate" tienes la hora del cliente? Y esta hora es siempre de la misma zona horaria?

Por otro lado insisto en el tema del cambio de hora verano/invierno....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #7 (permalink)  
Antiguo 19/05/2011, 13:29
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Hora Local y NO del Servidor

Bien quimfv, muchas gracias por ayudarme... ahora si, no entendía como poner el NOW en el WHERE.

Lo hice así y aparentemente funciona:

Código PHP:
$query mysql_query("SELECT *, ADDTIME(NOW(), '0 2:0:0.000000'), DATE_FORMAT(fecha,'%Y') AS fecha         
FROM documentos_actas 
WHERE (lastupdate BETWEEN DATE_SUB(ADDTIME(NOW(), '0 2:0:0.000000'), INTERVAL 7 DAY) AND ADDTIME(NOW(), '0 2:0:0.000000'))"
); 
El campo "lastupdate" no tiene la hora del cliente, es el campo que cuando ingreso un nuevo registro o modifico alguno existente, actualiza la fecha y hora a ese momento. Es un campo tipo "timestamp" con los atributos "ON UPDATE CURRENT_TIMESTAMP".

NOW toma la hora del Servidor (EE.UU), el cual tiene 2 horas menos que Argentina. Lo ideal sería que NOW tome la hora del cliente, pero realmente no se como se hace!

Por otro lado, respecto a la hora de verano del Servidor, tendré que ir modificando la suma de horas de acuerdo a la época de verano del Servidor... si hay otra forma de hacerlo lo desconozco.
  #8 (permalink)  
Antiguo 20/05/2011, 01:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Hora Local y NO del Servidor

Cita:
El campo "lastupdate" no tiene la hora del cliente
Si en "lastupdate" tenes la hora del servidor. Que problema hay en comparar con now() que tambien es la hora del servidor?

Al comparar campos o valores de fecha/tiempo lo importante es que los dos terminos de la comparación esten en la misma zona horaria.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #9 (permalink)  
Antiguo 20/05/2011, 12:32
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Hora Local y NO del Servidor

Bueno, a mi humilde entender, eso es relativo... por que por ejemplo en éste caso, un cliente de Argentina va a ver que las novedades y actualizaciones están ajustadas a la hora de Argentina. En cambio uno de Europa u otra zona horaria NO, debido a que con el ADDTIME yo estoy adecuando la hora de los script a la hora de Argentina.

Doy un ejemplo. Yo pongo en la página "transcripciones de documentos que coinciden con el día de hoy". Llegado las 24 horas del día, ese documento deja de verse para los de Argentina... en cambio para los de otra zona horaria se sigue viendo o desapareció antes de las 24 horas.

"lastupdate" puede ser una fecha y hora cualquiera, y se compara su día y mes con la actual. Si coincide se muestra y si no coincide no se muestra.

¿No se si me explico bien?
  #10 (permalink)  
Antiguo 23/05/2011, 01:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Hora Local y NO del Servidor

Explicarte si lo haces pero si corriges una hora desbes corregir la otra si no el resultado será incoherente...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #11 (permalink)  
Antiguo 23/05/2011, 01:36
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Hora Local y NO del Servidor

Bueno si, por eso digo que lo ideal sería que la hora del Servidor tome la hora del Cliente... pero eso si se puede hacer, yo no se cómo, no me dan los conocimientos!

quimfv, como no tengo la solución, tendremos que dejarlo aquí por que sino será una charla sin resultados concretos, salvo que lo sepas y me orientes en como hacerlo... de todas formas, como dije anteriormente, muchas gracias por tu ayuda!

Etiquetas: local, servidor
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 16:02.