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

problemas con CURDATE()

Estas en el tema de problemas con CURDATE() en el foro de Mysql en Foros del Web. buenas amigos, estoy trabajando con un procedimiento almacenado en el que manejo fechas , dos tipos de fechas: la fecha de hoy y una fecha ...
  #1 (permalink)  
Antiguo 07/10/2013, 15:17
 
Fecha de Ingreso: enero-2007
Mensajes: 58
Antigüedad: 17 años, 3 meses
Puntos: 3
problemas con CURDATE()

buenas amigos,
estoy trabajando con un procedimiento almacenado en el que manejo fechas , dos tipos de fechas: la fecha de hoy y una fecha de adquisicion.
debo calcular cuanto tiempo hay en dia mes y año entre ambas fechas.
el problema es que al hacer esto:
Código MySQL:
Ver original
  1. SET VarFechaActual = CURDATE();
  2.     SET AnoAct = YEAR(VarFechaActual);
  3.     SET MesAct = MONTH (VarFechaActual);
  4.     SET DiaAct = DAY(VarFechaActual);
  5. SELECT CONCAT(' EL AÑO DE HOY ES ', AnoAct,', EL MES DE HOY ES ', MesAct, ', EL DIA DE HOY ES ', DiaAct);

me da como resultado esto:
EL AÑO DE HOY ES 2012, EL MES DE HOY ES 10, EL DIA DE HOY ES 37

me esta restando 1 año al los años, los meses estan bien, y los dias les esta sumando 30 dias..
alguna idea de por que.
  #2 (permalink)  
Antiguo 07/10/2013, 17:26
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: problemas con CURDATE()

La verdad no veo cómo pueda estar sucediendo lo que dices.
Mira, siendo que para lo único que usas esas variables es para mostrar ese texto, bien podemos reemplazar las variables del CONCAT por sus funciones origen, y en ese caso el resultado sería:
Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->     CONCAT(' EL AÑO DE HOY ES ',
  3.     ->             YEAR(CURDATE()),', EL MES DE HOY ES ',
  4.     ->             MONTH(CURDATE()), ', EL DIA DE HOY ES ',
  5.     ->             DAY(CURDATE())) Fecha;
  6. +-----------------------------------------------------------------+
  7. | Fecha                                                           |
  8. +-----------------------------------------------------------------+
  9. |  EL AÑO DE HOY ES 2013, EL MES DE HOY ES 10, EL DIA DE HOY ES 7 |
  10. +-----------------------------------------------------------------+
  11. 1 row in set (0.00 sec)
Sólo tendría sentido que obtuvieses ese valor 37 si y sólo si usaras la función DAYOFYEAR() y la fecha fuese el 6 de febrero:
Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->     CONCAT(' EL AÑO DE HOY ES ',
  3.     ->             YEAR(CURDATE()),', EL MES DE HOY ES ',
  4.     ->             MONTH(CURDATE()), ', EL DIA DE HOY ES ',
  5.     ->             DAYOFYEAR(CURDATE())) Fecha;
  6. +-------------------------------------------------------------------+
  7. | Fecha                                                             |
  8. +-------------------------------------------------------------------+
  9. |  EL AÑO DE HOY ES 2013, EL MES DE HOY ES 10, EL DIA DE HOY ES 280 |
  10. +-------------------------------------------------------------------+
  11. 1 row in set (0.00 sec)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: select
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 03:13.