Ver Mensaje Individual
  #7 (permalink)  
Antiguo 27/11/2014, 11:13
Avatar de gnzsoloyo
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: Procedimiento mysql de fecha a texto

bastante bien logrado para ser el primer intento...
Ahora bien hay algunas cosas que debes tner en cuenta:
1) No conviene usar comillas (") para las cadenas de texto, porque no todas las instalaciones de MySQL te lo tomarán bien. Normalmente y por default las comillas se usan como delimitadores de nombres de objetos de base de datos y no para cadenas. Es más seguro usar apóstrofos ('), que siempre son para cadenas.
2) NUNCA uses la base "mysql" para pruebas. Esa base es propia de la adminsitracion de MySQL, y no deben crearse tablas, procedimietnos ni ningun objeto en ella. Sólo la usa internamente el MySQL para si mismo.
3) No tiene sentido buscar la condición de ELSE para decir que algo no es un mes. Siendo el parámetro de entrada un DATE, si no es una fecha de formato válido se dispara un error de MySQL de tipo de dato incorrecto y el procedimiento no se ejecuta. Así de sencillo.
4) Trata de no complicar la lógica. Lee con cuidado los tipos de funciones que existen y que son muy variados en MySQL. Las hasy mejores y más simples para hacer lo que quieres.

Yo probaría esto, a ver si funciona bien:

Código MySQL:
Ver original
  1. DROP DATABASE IF EXISTS baseprueba;
  2.  
  3. CREATE DATABASE IF EXISTS baseprueba;
  4.  
  5. USE baseprueba;
  6.  
  7. delimiter $$
  8. CREATE PROCEDURE fechas(IN campofecha DATE)
  9.     DECLARE NombreDia VARCHAR(50);
  10.     DECLARE nombreMes VARCHAR(50);
  11.  
  12.     SET NombreDia = ELT(DAYOFWEEK(campofecha), 'Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sabado');
  13.     SET nombreMes = ELT(MONTH(campofecha), 'Enero',  'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
  14.     SELECT CONCAT(NombreDia, ' ', DAY(campofecha), ' de ', nombreMes, ' de ', YEAR(campofecha));    
  15. END;$$
  16.  
  17. CALL fechas('2014-11-27');


DAYOFWEEK(): http://dev.mysql.com/doc/refman/5.6/...tion_dayofweek

ELT(): http://dev.mysql.com/doc/refman/5.6/...l#function_elt
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)