Foros del Web » Programando para Internet » PHP »

Mostrar el número de días transcurridos desde un campo fecha en la BD

Estas en el tema de Mostrar el número de días transcurridos desde un campo fecha en la BD en el foro de PHP en Foros del Web. Hola amigos foreros!!!!! Tengo una inquietud acerca de cómo devolver el valor de días en un array de resultados, sé que en Mysql la sintaxis ...
  #1 (permalink)  
Antiguo 25/03/2004, 19:53
T4X
 
Fecha de Ingreso: enero-2004
Ubicación: myT-Base
Mensajes: 254
Antigüedad: 13 años, 11 meses
Puntos: 2
Mostrar el número de días transcurridos desde un campo fecha en la BD

Hola amigos foreros!!!!!


Tengo una inquietud acerca de cómo devolver el valor de días en un array de resultados, sé que en Mysql la sintaxis posible sea

Código PHP:
$reg_count=mysql_query("SELECT DATEDIFF('regdate','getdate()')"
Pero me aparece un error y lo que quiero es que me muestre el número de días transcurridos tras el registro que se haya efectuado en una fecha especifica...


He intentado de todo pero siempre me devuelve la sintaxis errónea, agradezco a quien me pueda ayudar con esta inquietud, me he gastado toda la tarde y no he obtenido el resultado deseado.........

Gracias
__________________
Ahora T4X es
WinGFX!!!!!
  #2 (permalink)  
Antiguo 26/03/2004, 07:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En Msyql tienes la función NOW() que te devuelve la fecha actual del servidor (Msyql) si usas campos tipo DATE o DATETIME

Puedes usar "alias" para darle un nombre de campo al resultado que obtegas de esa operación con fechas y obtener más campos de esa consulta si necesitas ...


Código PHP:
$reg_count=mysql_query("SELECT DATEDIFF('regdate',NOW()) as fecha_diferencia")

echo 
mysql_result($reg_count,0,"fecha_diferencia");

ó

while ($row=mysql_fetch_array($reg_count)){
echo 
$row['fecha_diferencia'];

Si quieres usar una función de PHP para obtener esa fecha .. (sería más bien date() con el formato aaaa-dd-mm si son campos tipo DATE y/o con hora si son DATETIME ..) tendrías que usar sintax "concatenada" tipo:

Código PHP:
$reg_count=mysql_query("SELECT DATEDIFF('regdate','".date('formato ...')."')) as fecha_diferencia"
Si obtines algún tipo de "error" debes indicarlo cuando preguntes .. por qué del error puede ver donde falla y como solventarlo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 26/03/2004, 09:30
T4X
 
Fecha de Ingreso: enero-2004
Ubicación: myT-Base
Mensajes: 254
Antigüedad: 13 años, 11 meses
Puntos: 2
Ya lo intenté tal como me dices, pero aparece un error de mysql, como:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource.....

Lo que hice fue colocar la primera sintaxis que me ayudaste y aparece el anterior error...

Que podría ser????
__________________
Ahora T4X es
WinGFX!!!!!
  #4 (permalink)  
Antiguo 26/03/2004, 10:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Veamos ..

me dejé un ; (por si no te diste cuenta) .. y para ver si hay problemas con el nombre de campo o SQL en general usemos la función mysql_error() :

Código PHP:
$reg_count=mysql_query("SELECT DATEDIFF(regdate,NOW()) as fecha_diferencia");
echo 
mysql_result($reg_count,0,"fecha_diferencia") or die (mysql_error()); 
A todo esto .. que tipo de campo es tu regdate ? .. por cierto .. ahora que lo veo va sin 'comillas' las referencias en funciones de Mysql a campos de la tabla ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 26/03/2004 a las 10:14
  #5 (permalink)  
Antiguo 26/03/2004, 10:19
T4X
 
Fecha de Ingreso: enero-2004
Ubicación: myT-Base
Mensajes: 254
Antigüedad: 13 años, 11 meses
Puntos: 2
El regdate es la variable con la que pienso pasar el muestreo de días transcurridos, lo del ; ya lo asigné, y la función mysql_error() tambien está asignada.

Y el error sigue.....

Claro que intenté colocarlo en la tabla de resultados con la consulta, el error continua, al respecto todo está bien, tu explicación pero hay algo que no deja continuar con el error, y aparece esto:

mysql_result(): supplied argument is not a valid MySQL result resource

Y tambien las comillas ' se han eliminado, practicamente eso está listo pero por que no funciona, será un error de cadena????

bueno, lo averiguo........

Gracias Cluster!!!!!!
__________________
Ahora T4X es
WinGFX!!!!!
  #6 (permalink)  
Antiguo 26/03/2004, 10:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm con el mysql_error() tedría que haberte mostrado algún tipo de erro tipo "sintx SQL mal .. en tal sitio" o algún error sobre conexión .. Para eso te recomendé usar esa función para ver algún error tipo las comillas o sintax en general SQL ..

por cierto ..¿ insisto . de que tipo es el campo regdate de tu BD?

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 26/03/2004, 10:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Otro detalle:

Cita:
DATEDIFF(expr,expr2)
DATEDIFF() returns the number of days between the start date expr and the end date expr2. expr and expr2 are date or date-and-time expressions. Only the date parts of the values are used in the calculation.
mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
-> 1
mysql> SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');
-> -31

DATEDIFF() was added in MySQL 4.1.1
Que versión de Msyql usas?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 26/03/2004, 10:32
T4X
 
Fecha de Ingreso: enero-2004
Ubicación: myT-Base
Mensajes: 254
Antigüedad: 13 años, 11 meses
Puntos: 2
Cluster, todo estaba bien, no se si sea la versión de mi servidor que es 4.0.18, es probable que esto no funcione en mi página.

Creo que eso era el problema por el cual no me dejaba obtener el valor, no se si me corrijas Cluster pero creo que es asi......

Es problable mi afirmación????
__________________
Ahora T4X es
WinGFX!!!!!
  #9 (permalink)  
Antiguo 26/03/2004, 10:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues si, .. la documentación de Msyql al respecto (el estracto que puse) dice eso mismo .. que dicha función apareció en Msyql 4.1.1 en adelante y tu usas una anterior ..

pero de igual forma insisto que la instrucción (cambió por siacaso a una variable .. ):

Código PHP:
$reg_count=mysql_query("SELECT DATEDIFF(regdate,NOW()) as fecha_diferencia");
$fecha=mysql_result($reg_count,0,"fecha_diferencia") or die (mysql_error());
echo 
$fecha
Debería arrojarte un error referente a eso mismo .. algo tipo "no conozco la función DATEDIFF() ...

Revisa la documentación de Mysql ..por qué hay otras alternativas en SQL para resolver el problema de fechas que tienes:
http://www.mysql.com/doc/en/Date_and...functions.html

(por ejemplo .. creo que te vendría bien el "TO_DAYS()" tal cual sale en el ejemplo ... )

Eso sí, fijate bien si hacen algún comentario sobre la versión de Mysql que debes disponer para usar tal o cual versión.

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 26/03/2004, 10:49
T4X
 
Fecha de Ingreso: enero-2004
Ubicación: myT-Base
Mensajes: 254
Antigüedad: 13 años, 11 meses
Puntos: 2
Cluster, todo está bien, lo que me inquieta es por que genera este error cuando la consulta está perfecto:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(regdate,NOW()) as fecha_diferencia' at line 1

Me podrías ayudar mientras reviso otra vez el código??
Gracias por tu apreciable ayuda
__________________
Ahora T4X es
WinGFX!!!!!
  #11 (permalink)  
Antiguo 26/03/2004, 11:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues justamente ese es el error referente a tu función DATEDIFF() que pretendes usar en una versión de Mysql que no corresponde ..

Los mensajes de SQL de ese tipo "syntax .. near" indican que "cerca" (normalmente justo antes de..) esa porción de SQL que menciona en el error hay un problema con syntax (además fijate que dice que mires el manual por su correspondencia con la versión que uses de Mysql ..).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 18:57.