Foros del Web » Programando para Internet » PHP »

Años, meses y días de una fecha

Estas en el tema de Años, meses y días de una fecha en el foro de PHP en Foros del Web. Hola a todos. Estoy obteniendo una diferencia entre fechas con una función MySQL: Código PHP: SELECT DATEDIFF ( campoFecha , "2006-11-02" ) AS  diferencia FROM miTabla  Me gustaría saber ...
  #1 (permalink)  
Antiguo 25/11/2006, 05:31
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Años, meses y días de una fecha

Hola a todos.

Estoy obteniendo una diferencia entre fechas con una función MySQL:

Código PHP:
SELECT DATEDIFF(campoFecha,"2006-11-02") AS diferencia FROM miTabla 
Me gustaría saber como mostar esa diferencia de esta forma:

1 año, 6 meses, 10 días

Gracias por adelantado. Saludos,
  #2 (permalink)  
Antiguo 25/11/2006, 07:08
Avatar de Falhor  
Fecha de Ingreso: diciembre-2005
Ubicación: Buenos Aires
Mensajes: 425
Antigüedad: 18 años, 4 meses
Puntos: 5
No estoy acostumbrado a trabajar con fechas, que resultado da eso? (Ya se que la diferencia de las fechas pero me refiero a como lo muestra)

Saludos.
  #3 (permalink)  
Antiguo 25/11/2006, 08:05
Avatar de Falhor  
Fecha de Ingreso: diciembre-2005
Ubicación: Buenos Aires
Mensajes: 425
Antigüedad: 18 años, 4 meses
Puntos: 5
Borre Todo Para Evitar Confusiones

Última edición por Falhor; 25/11/2006 a las 20:21
  #4 (permalink)  
Antiguo 25/11/2006, 12:32
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola Falhor. Gracias por contestar.

Tu código no me ha funcionado, da error con la función DateDiff

Lo que devuelve DATEDIFF(campoFecha,"2006-11-02") es la diferencia entre las dos fecha, en días.

¿A alguien como pasarlo a "1 año, 6 meses, 10 días"

Gracias. Saludos,
  #5 (permalink)  
Antiguo 25/11/2006, 15:46
Avatar de Falhor  
Fecha de Ingreso: diciembre-2005
Ubicación: Buenos Aires
Mensajes: 425
Antigüedad: 18 años, 4 meses
Puntos: 5
Borre Todo Para Evitar Confusiones.

Última edición por Falhor; 25/11/2006 a las 20:20
  #6 (permalink)  
Antiguo 25/11/2006, 20:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Falhor Ver Mensaje
Vos haces "DATEDIFF(campoFecha,"2006-11-02")" y te muestra: 4 (por ejemplo)?? Bueno, primero que nada supongo que si sabes PHP y leiste el codigo cambiaste el $fecha1 y eso por lo que querias, en tu ejemplo creo que seria:

Código PHP:
$dias DateDiff ("d"campoFecha"2006-11-02");
$meses DateDiff ("m"campoFecha"2006-11-02");
$anios DateDiff ("yyyy"campoFecha"2006-11-02");

$dias mysql_result($dias);
$meses mysql_result($meses);
$anios mysql_result($anios);

echo 
$anios;
if(
$anios 2){echo "año, "}else{echo "años, "}
echo 
$meses;
if(
$meses 2){echo "mes, "}else{echo "meses, "}
echo 
$dias;
if(
$dias 2){echo "dia, "}else{echo "dias, "
No le encuentro el problema, estuve buscando info. y deberia funcionar asi.

Si no te funciona asi proba asi:

Código PHP:
$dias mysql_query(DateDiff ("d"campoFecha"2006-11-02"));
$meses mysql_query(DateDiff ("m"campoFecha"2006-11-02"));
$anios mysql_query(DateDiff ("yyyy"campoFecha"2006-11-02"));

$dias mysql_result($dias);
$meses mysql_result($meses);
$anios mysql_result($anios);

echo 
$anios;
if(
$anios 2){echo "año, "}else{echo "años, "}
echo 
$meses;
if(
$meses 2){echo "mes, "}else{echo "meses, "}
echo 
$dias;
if(
$dias 2){echo "dia, "}else{echo "dias, "
No encuentro el problema... Sino mostrame el error que te tira, porque capaz no encontraba $fecha1 y $fecha2...
Realmente todo lo que propones no funciona por:

1) Construcciones SQL así no tienen sentido:
$dias = DateDiff ("d", campoFecha, "2006-11-02");
$dias = mysql_result($dias);

Por la sencilla razón que DATEDIFF() es una Función de SQL .. así que tendrás que hacer tu "SELECT" y ahí aplicar la función .. tanto si es para un condicional ("WHERE") o cálculo en sí ..

2) No puedes hacer 3 mysql_query() y 3 mysql_result() .. por lo mismo de antes ..

3) Las funcion DATEDIFF() de Mysql .. no tiene 3 parámetros (tal vez te confundistes .. esa función existe en muchos lenguajes .. )

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 25/11/2006, 20:11
Avatar de Falhor  
Fecha de Ingreso: diciembre-2005
Ubicación: Buenos Aires
Mensajes: 425
Antigüedad: 18 años, 4 meses
Puntos: 5
Gracias por aclararmelo, lo que pasa es que como aclare antes "No estoy acostumbrado a trabajar con fechas" (No tengo experiencia en PHP), y busque en google, entonces puse en relacion a lo que encontre eso...

Saludos.
  #8 (permalink)  
Antiguo 25/11/2006, 20:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por JavierB Ver Mensaje
Hola Falhor. Gracias por contestar.

Tu código no me ha funcionado, da error con la función DateDiff

Lo que devuelve DATEDIFF(campoFecha,"2006-11-02") es la diferencia entre las dos fecha, en días.

¿A alguien como pasarlo a "1 año, 6 meses, 10 días"

Gracias. Saludos,
Tal vez lo que vió Falhor fué esta función en PHP que alguien creó para simular lo que en SQL la mayoría de motores de BBDD ya hacen:

http://www.ilovejackdaniels.com/php/...diff-function/
(eso sí .. algunas funcionalidades más tiene).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 25/11/2006, 20:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por JavierB Ver Mensaje
Hola a todos.

Estoy obteniendo una diferencia entre fechas con una función MySQL:

Código PHP:
SELECT DATEDIFF(campoFecha,"2006-11-02") AS diferencia FROM miTabla 
Me gustaría saber como mostar esa diferencia de esta forma:

1 año, 6 meses, 10 días

Gracias por adelantado. Saludos,
Bueno .. al final lo encontré (realmente adaba buscando la solución "SQL" puro):

http://www.jesuslara.com.ve/blog/?p=51

Hay dos propuestas .. una para Mysql 4.x (e inferiores) y otra para Mysql 5.x (define un procedimiento almacenado).

En realidad se trata de operar 100% con fechas para ir obteniendo los años transcurridos .. los días, meses .. Exactamente igual que si lo hicieras con PHP a base de "dividir" (y venceras xD)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 25/11/2006, 20:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Falhor Ver Mensaje
Gracias por aclararmelo, lo que pasa es que como aclare antes "No estoy acostumbrado a trabajar con fechas" (No tengo experiencia en PHP), y busque en google, entonces puse en relacion a lo que encontre eso...

Saludos.
Ok, .. de todas formas tenías más problemas con uso de "SQL" en general que no con "fechas".

Repasa esos temas. Usas mucho "mysql_result()" en casos que mejor conviene mysql_fetch_array() o mysql_fetch_row() .. etc. Cualquier duda, pregunta sin compromiso.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 25/11/2006, 21:01
Avatar de Falhor  
Fecha de Ingreso: diciembre-2005
Ubicación: Buenos Aires
Mensajes: 425
Antigüedad: 18 años, 4 meses
Puntos: 5
Pero que cambia en usar mysql_result() o mysql_fetch_row()??

Y una cosa mas, si yo quiero hacer mas de un query como hago??

Saludos y gracias (Para no desvirtuar si queres hago un tema nuevo)
  #12 (permalink)  
Antiguo 25/11/2006, 21:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Falhor Ver Mensaje
Pero que cambia en usar mysql_result() o mysql_fetch_row()??

Y una cosa mas, si yo quiero hacer mas de un query como hago??

Saludos y gracias (Para no desvirtuar si queres hago un tema nuevo)
Mejor inicia un nuevo tema y así tratamos todos esos aspectos con calma sin mezclar en este tema.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 26/11/2006, 03:29
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola Cluster. Gracias por los enlaces, los echaré un vistazo y si tengo alguna duda... volveré

Gracias también a Falhor

Saludos,
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:06.