Consulta en codigo para Borrar datos anteriores a X dia en SQL y PHP

  • Iniciador del tema Iniciador del tema Aguil@
  • Fecha de inicio Fecha de inicio
Estado
Cerrado para nuevas respuestas.

Aguil@

Usuario Habitual nvl.3 ★
10 Oct 2007
11.634
40
197
Hola
tengo una consulta :
tengo una base de dtaos llamada "webshop" y en ella varias tablas una se llama "ws_canasta"...en esta debo borrar todos los datos anteriores a 14 dias por ejemplo . La tabla le da una fecha timestamp a los articulos , encontre varias cosas ,pero esta me parece mas sencilla , pero no se si funciona con el timestamp de SQL

Código:
SELECT * FROM webshop WHERE wann < DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)

yo le cambie el select por delete

Código:
{
$sql = "DELETE * FROM ws_canasta WHERE < DATE_SUB(CURRENT_DATE, INTERVAL 14 DAY)";
}

¿hice lo correcto? porque ... no entendi bien ¿que hace date_sub? si era subtraer ¿es decir este comando borra los datos o no?
otra opcion que vi ...

Código:
DELETE FROM ws_canasta
WHERE w_timestamp < CURDATE() - INTERVAL 14 DAY

otro (por si a alguien les sirve ;) )
Código:
DELETE FROM ws_canasta
WHERE w_timestamp < NOW() - INTERVAL 14 DAY

Repito me gustaria saber cuales funcionan con timestamp de SQL ,ya que por el momento no puedo probar nada ...y si alguien tiene una info mas "didactica" de lo que hace DATE_SUB.

Saludos a todos y que esten bien
aguil@
 
bueno creo que la cosa es asi DATE_SUB('fecha_actual', INTERVAL 7 DAY), con el date_sub puedes comparar si la fecha de la tabla a la que estas consultando entra en esa categoria y en base a eso modificas o eliminas segun el script que coloques, solo funciona si tienes un campo con la fecha y hora y donde dice fecha actual va la fecha actual el intevalo de los dias lo colocas tu en este caso es 7 y aqui un ejemplo de como lo puedes usar para eliminar.


$sql = "DELETE * FROM ws_canasta WHERE `fecha_registro` < DATE_SUB(date("aa/mm/YY"), INTERVAL 14 DAY)";ahi tu sabes que funcion o de que forma colocas y muestras la fecha, pero creo que debe tener tambien la hora, eso espero que te ayude
 
ssiii ! ayuda bastante !
mira con lo de la hora actual ...por eso tiene un CURRENT_DATE segun definicion
El comando Current date devuelve la fecha actual tal como está definida en el reloj del sistema.

y ahi tengo dudas ya que los articulos en la tabla tienen un "timestamp"...¿no seria mejor entonces asi? (la otra opcion!)

Código:
DELETE FROM ws_canasta WHERE w_timestamp < CURDATE() - INTERVAL 14 DAY

:S ...igual gracias ! :)
 
creo que debe tener el DATE_SUB para que tome el tema del intervalo de tiempo, coloca
Código:
DELETE FROM ws_canasta WHERE w_timestamp < DATE_SUB(CURDATE(), INTERVAL 14 DAY);
asi te deveria funcionar bien, ya que la funcion DATE_SUB hace que el sistema busque intevalos de tiempo, donde toma el tiempo registrado y compara con la fecha que tu le das y ahi le dices en que intervalo de tiempo tiene que funcionar, claro que esto se debe ejecutar manualmente a menos que agas un script que realice esta accion automaticamente todos los dias o sino vas a tener que ejecutar el script manualmente
 
la idea es manualmente ...asi que esta bien ...gracias
 
Estado
Cerrado para nuevas respuestas.