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

Tema en 'Casos Resueltos Informáticos' iniciado por Aguil@, 28 Oct 2011.

Estado del Tema:
Cerrado para nuevas respuestas
  1. Aguil@

    Aguil@ Usuario Habitual nvl.3 ★
    697/812

    Registrado:
    10 Oct 2007
    Mensajes:
    13.935
    Me Gusta recibidos:
    38
    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

    Insertar CODE, HTML o PHP:
    SELECT * FROM webshop WHERE wann < DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
    yo le cambie el select por delete

    Insertar CODE, HTML o PHP:
    {
    $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 ...

    Insertar CODE, HTML o PHP:
    DELETE FROM ws_canasta
    WHERE w_timestamp < CURDATE() - INTERVAL 14 DAY
    otro (por si a alguien les sirve ;) )
    Insertar CODE, HTML o PHP:
    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@
     
  2. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Registrado:
    31 May 2008
    Mensajes:
    2.727
    Me Gusta recibidos:
    13
    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
     
  3. Aguil@

    Aguil@ Usuario Habitual nvl.3 ★
    197/244

    Registrado:
    10 Oct 2007
    Mensajes:
    13.935
    Me Gusta recibidos:
    38
    ssiii ! ayuda bastante !
    mira con lo de la hora actual ...por eso tiene un CURRENT_DATE segun definicion
    y ahi tengo dudas ya que los articulos en la tabla tienen un "timestamp"...¿no seria mejor entonces asi? (la otra opcion!)

    Insertar CODE, HTML o PHP:
    DELETE FROM ws_canasta WHERE w_timestamp < CURDATE() - INTERVAL 14 DAY
    :S ...igual gracias ! :)
     
  4. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Registrado:
    31 May 2008
    Mensajes:
    2.727
    Me Gusta recibidos:
    13
    creo que debe tener el DATE_SUB para que tome el tema del intervalo de tiempo, coloca
    Insertar CODE, HTML o PHP:
    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
     
  5. Aguil@

    Aguil@ Usuario Habitual nvl.3 ★
    197/244

    Registrado:
    10 Oct 2007
    Mensajes:
    13.935
    Me Gusta recibidos:
    38
    la idea es manualmente ...asi que esta bien ...gracias
     
  6. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Registrado:
    31 May 2008
    Mensajes:
    2.727
    Me Gusta recibidos:
    13
    entonces todo listo que un mod cierre el tema xd
     
  7. Aguil@

    Aguil@ Usuario Habitual nvl.3 ★
    197/244

    Registrado:
    10 Oct 2007
    Mensajes:
    13.935
    Me Gusta recibidos:
    38
    seeeeeeeeeeee! yo aviso !
     
  8. the kamikase

    the kamikase Usuario Maestro nvl. 6 ★ ★ ★ ★
    697/812

    Registrado:
    19 Sep 2008
    Mensajes:
    68.365
    Me Gusta recibidos:
    42
Estado del Tema:
Cerrado para nuevas respuestas