Foros del Web » Programando para Internet » PHP »

Restarle 10 a una fecha

Estas en el tema de Restarle 10 a una fecha en el foro de PHP en Foros del Web. Buenas, tengo casi terminado el panel y me quedan los detalles. Tengo una seccion donde se muestran unos mensajes, para ser exactos tienen que mostrar ...
  #1 (permalink)  
Antiguo 02/12/2009, 06:26
 
Fecha de Ingreso: enero-2009
Mensajes: 434
Antigüedad: 15 años, 3 meses
Puntos: 5
Restarle 10 a una fecha

Buenas, tengo casi terminado el panel y me quedan los detalles.

Tengo una seccion donde se muestran unos mensajes, para ser exactos tienen que mostrar cuando caduca una cosa.

En la base de datos tengo el producto y su fecha de caducidad por ejemplo :

10-09-09

Quiero que en la pagina de mensajes cuando queden 10 dias para que caduque cualquiera de los productos de la bd, me muestre ese producto.

Alguien me puede orientar un poco como lo harian ?

Código PHP:
$sql "SELECT * FROM Hosting  WHERE Caducidad='$fechaactual' ORDER BY Nombre DESC";

$fechaactual date "d-m-y" ); 
Probe haciendo eso, para que me muestren los que caducan en el mismo dia, pero ni aun asi :S
  #2 (permalink)  
Antiguo 02/12/2009, 06:34
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Restarle 10 a una fecha

Código PHP:
$fechaactual date "Y-m-d" ); 

$sql "SELECT * FROM Hosting  WHERE DATEDIFF(STR_TO_DATE(".$fechaactual.",'%Y-%m-%d'),fecha_caducidad)<10 ORDER BY Nombre DESC"
  #3 (permalink)  
Antiguo 02/12/2009, 06:45
 
Fecha de Ingreso: enero-2009
Mensajes: 434
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: Restarle 10 a una fecha

He modificado tu codigo , pero sigue sin irme :s

Código PHP:
$sql "SELECT * FROM Hosting  WHERE DATEDIFF(STR_TO_DATE(".$fechaactual.",'%d-%m-%y'),Caducidad)<1 ORDER BY Nombre DESC"

Por otra parte


En mi bd tengo un producto que caduca :
02-12-09

He probado una consulta simple

Código PHP:
$sql "SELECT * FROM Hosting  WHERE Caducidad = 02-12-09 ORDER BY Nombre DESC"
Con eso me tendria que mostrar todos los datos que caduquen ese dia, pero no me los muestra

Última edición por esunestudio; 02/12/2009 a las 06:55
  #4 (permalink)  
Antiguo 02/12/2009, 09:38
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Restarle 10 a una fecha

debes de especificarle al sql que lo que estás pasando es una facha, si colocas 02-12-09 lo interpretará como una operación aritmética (02 menos 12 menos 9) y dará: -19 !!!

En cambio si lo colocas así: '02-12-09' lo interpreta como un cadena, mysql interpreta implícitamente cadenas como fecha cuando se les compara con un campo date, pero sólo evalúa cadenas con su formato preestablecido que sería 'YYYY-MM-DD' o 'yy-MM-DD', por ello '02-12-09' no lo interpretará adecuadamente, seria mejor '2009-12-09', es recomendable usar 4 dígitos en el año para evitar el efecto Y2K.

otra solución es especificar explícitamente el formato de fecha con STR_TO_DATE(date_str,format), en donde le especificas el formato:

STR_TO_DATE('02-12-09','%y-%m-%d')

Si el campo en donde almacenas la fecha no es DATE o DATETIME, debes considerar cambiarlo o aplicar str_to_date

Última edición por maycolalvarez; 02/12/2009 a las 09:44
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 12:13.