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

error 1054 - Unknown column 'Y' in 'field list'

Estas en el tema de error 1054 - Unknown column 'Y' in 'field list' en el foro de Mysql en Foros del Web. Buenas... estoy intentando hacer un procedimiento almacenado para calcular el valor de un campo llamado TIEMPOUSO en los registros de una tabla llamada activos.. ademas ...
  #1 (permalink)  
Antiguo 05/10/2013, 20:10
 
Fecha de Ingreso: enero-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 3
error 1054 - Unknown column 'Y' in 'field list'

Buenas...
estoy intentando hacer un procedimiento almacenado para calcular el valor de un campo llamado TIEMPOUSO en los registros de una tabla llamada activos.. ademas de este valor calculo otras cosas pero he querido probar el codigo como va hasta el calculo del campo TIEMPOUSO...
el caso es que cuando intento actualizar los valores de la tabla me da este error.
1054 - Unknown column 'Y' in 'field list'

este es el codigo:

Código MySQL:
Ver original
  1.     DECLARE bContinuar BOOLEAN DEFAULT true;
  2.     DECLARE VarSecuencia VARCHAR(50);
  3.     DECLARE Mensaje VARCHAR(100);
  4.     DECLARE VarValorActual DOUBLE(15,0);
  5.     DECLARE VarPorcentaje DOUBLE(15,0);
  6.     DECLARE VarValorAgregado DOUBLE(15,0);
  7.     DECLARE VarValor DOUBLE(15,0);
  8.     DECLARE VarDepAcum DOUBLE(15,0);
  9.     DECLARE VarFechaActual DATE;
  10.     DECLARE VarFechaAdq DATE;
  11.     DECLARE AnoAct INT;
  12.     DECLARE MesAct INT;
  13.     DECLARE DiaAct INT;
  14.     DECLARE Dia INT;
  15.     DECLARE Mes INT;
  16.     DECLARE Ano INT;
  17.     DECLARE AnoAdq INT;
  18.     DECLARE MesAdq INT;
  19.     DECLARE DiaAdq INT;
  20.     DECLARE cursor1 CURSOR FOR SELECT SECUENCIA, PORCDEP, VALORACTUAL, VALORAGREGADO, VALOR, FECHAADQUISICION, TOTALDEPRECIADO FROM activos;
  21.     DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET bContinuar = false;
  22.     SET VarFechaActual = DATE(Y-m-d);
  23.     SET AnoAct = YEAR(NOW());
  24.     SET MesAct = MONTH (NOW());
  25.     SET DiaAct = DAY(NOW());
  26.  
  27.     OPEN cursor1;
  28.     REPEAT
  29.     FETCH cursor1 INTO VarSecuencia, VarPorcentaje, VarValorActual, VarValorAgregado, VarValor, VarFechaAdq, VarDepAcum;
  30.     IF bContinuar THEN
  31.         SET AnoAdq = YEAR(VarFechaAdq);
  32.         SET MesAdq = MONTH (VarFechaAdq);
  33.         SET DiaAdq = DAY(VarFechaAdq);
  34.  
  35.         IF DiaAct < DiaAdq THEN
  36.             SET AnoAct = AnoAct - 1;
  37.             SET DiaAct = DiaAct + 30;
  38.         END IF;
  39.         IF MesAct < MesAdq THEN
  40.             SET MesAct = MesAct - 1;
  41.             SET MesAct = MesAct + 12;
  42.         END IF;
  43.         SET Dia = DiaAct - DiaAdq;
  44.         SET Mes = MesAct - MesAdq;
  45.         SET Ano = AnoAct - AnoAdq;
  46.         SET Mensaje = CONCAT('En el inventario, El tiempo de uso es de: ', Ano , Mes , Dia);
  47.        
  48.         UPDATE prueba_procedure SET prueba_procedure.TIEMPOUSO = Mensaje WHERE activos.SECUENCIA = VarSecuencia;
  49.     END IF;
  50.     UNTIL NOT bContinuar END REPEAT;
  51.     CLOSE cursor1;
  52. SELECT 'Los datos se cargaron correctamente';

ayuda por favor ...
GRACIAS..
  #2 (permalink)  
Antiguo 05/10/2013, 22:31
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, 4 meses
Puntos: 2658
Respuesta: error 1054 - Unknown column 'Y' in 'field list'

Pues es un problema simplísimo:
Código MySQL:
Ver original
  1. SET VarFechaActual = DATE(Y-m-d);
¿Me puedes explicar qué se supone que es ese "Y-m-d"?
Porque no es algo que corresponda a MYSQL...

¿No será que querías poner:
Código MySQL:
Ver original
  1. SET VarFechaActual = CURDATE();
__________________
¿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 06/10/2013, 09:26
 
Fecha de Ingreso: enero-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 3
Respuesta: error 1054 - Unknown column 'Y' in 'field list'

en teoria y en mi muy escaso pero evidentemente equivocado conocimiento de Mysql era la fecha en formato año mes y dia... no se porque tengo la indea de averlo visto en unos apuntes de Mysql consultando por la internet.

muchisimas gracias por la ayuda
  #4 (permalink)  
Antiguo 06/10/2013, 09:32
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, 4 meses
Puntos: 2658
Respuesta: error 1054 - Unknown column 'Y' in 'field list'

Probablemente haya sido una referencia sobre el uso de PHP con MySQL, o bien algún apunte referido al formato.
Como nota adicional, si quieres convertir una cadena de texto a fecha en ese contexto, hay al menos dos tres formas:
1) Dejas que MySQL lo haga implícito (es dañino para la performance en grandes consultas).:
Código MySQL:
Ver original
  1. SET VarFechaActual = '2013-10-05';
2) Usas la conversión explicita con DATE(). Esta espera un formato definido:
Código MySQL:
Ver original
  1. SET VarFechaActual = DATE('2013-10-05');
3) Usas la función STR_TO_DATE():
Código MySQL:
Ver original
  1. SET VarFechaActual = STR_TO_DATE('2013-10-05', '%Y-%m-%d');

Cualquiera sirve, pero por supuesto, puede implicar hardcoding en el SP, que es una muy mala idea en desarrollo.
__________________
¿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 06/10/2013, 09:49
 
Fecha de Ingreso: enero-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 3
Respuesta: error 1054 - Unknown column 'Y' in 'field list'

he corregido usando CURDATE() Y EL ERROR CAMBIO AOHRA ME DA ESTE ERROR:
1054 - Unknown column 'activos.SECUENCIA' in 'where clause'

GRACIAS POR TU AYUDA
  #6 (permalink)  
Antiguo 06/10/2013, 10:04
 
Fecha de Ingreso: enero-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 3
Respuesta: error 1054 - Unknown column 'Y' in 'field list'

ya corregi esto activos.SECUENCIA lo cambie por solo SECUENCIA
y el error se fue pero ahora me sale esto en el campo TIEMPOUSO:
En el inventario, El tiempo de uso es de 1535

deberia salirme

En el inventario, El tiempo de uso es de 13 años, 2 mese y 15 dias como ejemplo me puedes ayudar diciendome como concatenar eso en esta variable

Código MySQL:
Ver original
  1. SET Mensaje = CONCAT('En el inventario, El tiempo de uso es de: ', Ano , Mes , Dia);
  #7 (permalink)  
Antiguo 06/10/2013, 10:51
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, 4 meses
Puntos: 2658
Respuesta: error 1054 - Unknown column 'Y' in 'field list'

Código MySQL:
Ver original
  1. SET Mensaje = CONCAT('En el inventario, el tiempo de uso es de: ', Ano ' años, ', Mes , ' mes/es y ', Dia, ' días');
Es cuestión de paciencia...
De lo contrario, lo deberás resolver en la aplicación (cosa que tampoco es tan difícil).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 06/10/2013, 11:09
 
Fecha de Ingreso: enero-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 3
Respuesta: error 1054 - Unknown column 'Y' in 'field list'

me da este error al poner esa sentencia:

1583 incorrect parameters in the call to native function 'CONCAT'
  #9 (permalink)  
Antiguo 06/10/2013, 11:14
 
Fecha de Ingreso: enero-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 3
Respuesta: error 1054 - Unknown column 'Y' in 'field list'

listo al parecer faltaba una coma despues de Ano
  #10 (permalink)  
Antiguo 06/10/2013, 11:21
 
Fecha de Ingreso: enero-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 3
Respuesta: error 1054 - Unknown column 'Y' in 'field list'

gracias un millo amigo me as salvado la vida, gracias a dios por gente desinterezada y sabida como tu...

una pregunta aprovechando:
puedo yo llamar los datos de una tabla como ejemplo la de activos de este mismo codigo y actualizar esa misma tabla por ejemplo la de activos en vez de la de prueba_procedure de este mismo codigo y todo en el mmismo procedimiento?
  #11 (permalink)  
Antiguo 06/10/2013, 12: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, 4 meses
Puntos: 2658
Respuesta: error 1054 - Unknown column 'Y' in 'field list'

Podés hacerlo en un mismo procedimiento, pero no en la misma sentencia.
¿Qué significa esto? Simplemente que no puedes combinar en una misma sentencia un UPDATE y un SELECT en tanto ambos se apliquen sobre la misma tabla.
Pero eso tampoco es necesario en un SP. Es mas simple, y mucho mejor aprovechar el SP para hacer todo el proceso, paso a paso.
Esa es una de las ventajas de un SP: Como se ejecutan como una unidad, puedes crear una secuencia de pasos que se consideran atómicos (indivisibles), donde el programa accede una sola vez, y la base (con el SP) se encarga de resolver el resto,.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 06/10/2013, 13:00
 
Fecha de Ingreso: enero-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 3
Respuesta: error 1054 - Unknown column 'Y' in 'field list'

exelente amigo voy a completar el SP y posteo aqui como me fue para que sepas el resultado final de lo que me has enceñado

Etiquetas: campo, column, field, registros, select, sql, tabla, unknown
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 08:30.