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

[SOLUCIONADO] TIMEDIFF y variable como primer parámetro

Estas en el tema de TIMEDIFF y variable como primer parámetro en el foro de Mysql en Foros del Web. He realizado esta consulta a my BD local y funciona @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT   fecha_hora , DATE_FORMAT ( fecha_hora , '%H ...
  #1 (permalink)  
Antiguo 21/11/2013, 02:58
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
TIMEDIFF y variable como primer parámetro

He realizado esta consulta a my BD local y funciona


Código SQL:
Ver original
  1. SELECT  fecha_hora, DATE_FORMAT(fecha_hora, '%H %i %s') AS HOUR, TIMEDIFF(fecha_hora, '2013-11-21 02:00:00') AS time_rest FROM pruebas_fecha


devuelve algo como

Cita:
-00:10:30
Pero al intentar utilizar la variable hour como primer parámetro de TIMEDIFF

Código SQL:
Ver original
  1. SELECT  fecha_hora, DATE_FORMAT(fecha_hora, '%H %i %s') AS HOUR, TIMEDIFF(HOUR, '02 00 00') AS difference_hour FROM pruebas_fecha

me da error

Cita:
Unknown column 'hour' in 'field list'
No entiendo por qué

¿Alguien me ayuda a entender el error y, en rasgos generales, cómo podría encontrar la manera de que solo tenga que introducir la hora y no la fecha para poder realizar el TIMEDIFF directamente sobre horas y no también sobre días, meses y años?
__________________
Ayúdame a hacerlo por mi mismo.
  #2 (permalink)  
Antiguo 21/11/2013, 03:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: TIMEDIFF y variable como primer parámetro

Cita:
No entiendo por qué
POr al menos dos causas:
1) No puedes usar un alias en la misma sentencia SELECT donde lo creas. No existe en ese momento.
2) HOUR es una palabra clave o palabra reservada, porque es nombre de un componente de SQL. No se deben usar palabras reservadas como nombre de objetos (tablas, columnas, alias, etc), porque pueden provocar errores indetectables.
Prueba:
Código MySQL:
Ver original
  1. SELECT  fecha_hora, TIME(fecha_hora, '%H %i %s') hora, TIMEDIFF(TIME(fecha_hora), '02:00:00') difference_hour
  2. FROM pruebas_fecha
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/11/2013, 03:54
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: TIMEDIFF y variable como primer parámetro

Muchas gracias gnzsoloyo. Me sirvió de gran ayuda :D :P

Finalmente la consulta quedó así

Código SQL:
Ver original
  1. SELECT  fecha_hora, TIME(fecha_hora) AS hora, TIMEDIFF(TIME(fecha_hora), '02:00:00') AS difference_hour  FROM pruebas_fecha

Donde el parámetro del segundo TIME dentro de TIMEDIFF puede ser el valor de una variable de PHP.

Saludos! y de nuevo gracias por la gran ayuda :P
__________________
Ayúdame a hacerlo por mi mismo.
  #4 (permalink)  
Antiguo 21/11/2013, 07:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: TIMEDIFF y variable como primer parámetro

Cita:
Donde el parámetro del segundo TIME dentro de TIMEDIFF puede ser el valor de una variable de PHP.
Ten en cuenta siempre que la variable de PHP debe llegar con el formato "HH:MM:SS", con horas de "00" a "24", o de lo contrario generará un error.
Esto atendiendo el detalle que MySQL no reconoce una variable de PHP, sino sólo el dato que se incorpora a la cadena de texto que se construye como consulta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/11/2013, 09:41
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: TIMEDIFF y variable como primer parámetro

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Ten en cuenta siempre que la variable de PHP debe llegar con el formato "HH:MM:SS", con horas de "00" a "24", o de lo contrario generará un error.
Esto atendiendo el detalle que MySQL no reconoce una variable de PHP, sino sólo el dato que se incorpora a la cadena de texto que se construye como consulta.
Exacto :D Así lo hice, tanto en el manual de PHP como MYSQL explican que hay que tener cuidado con los formatos de fecha y hora, si no son los mismos genera error.

Un placer :D :P
__________________
Ayúdame a hacerlo por mi mismo.

Etiquetas: primer, select, variable
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 14:19.