Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Casi lo tengo pero no doy con ello

Estas en el tema de Casi lo tengo pero no doy con ello en el foro de Mysql en Foros del Web. Hola a todos/todas: Estoy intentando borrar unos registros del mi BBDD en función del tiempo transcurrido. La condición es que hayan pasado más de 10 ...
  #1 (permalink)  
Antiguo 07/04/2011, 02:53
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Casi lo tengo pero no doy con ello

Hola a todos/todas:

Estoy intentando borrar unos registros del mi BBDD en función del tiempo transcurrido. La condición es que hayan pasado más de 10 dias desde la fecha de registro. He estado investigando y he conseguido hallar "una" diferencia entre la fecha de hoy y la del registro (me da 27 cuando debería ser 23). De todas maneras, lo que quiero es que no se queden en la BBDD determinados registros pasado un tiempo, por lo que la interpretación de MySQL me puede servir.
Sin embargo cuando trato de borrar registros que sean más antiguos de 10 no funciona.
Para que me podáis orientar adjunto el código de pruebas que tengo.

Código PHP:
<?php
    
// Llamo las variables de conexión a DB
            
            
$host "localhost"
            
$user "root"
            
$pass "12345"
            
$db "abcd"

            
                
$_SESSION['usuario'];
                
$usuario=$_SESSION['usuario'];
                echo 
$usuario;
    
// Abro conexión y selecciono la base de datos

            
$connection mysql_connect($host$user$pass,$db) or die ("Unable to connect!"); 
            
mysql_select_db($db) or die ("Unable to select database!"); 
                
    
//Query que borra datos en función de su antiguedad si esta es mayor que 10                         

$SelDELUSER =mysql_query ("delete *from usuarios WHERE datediff('$fechahoy',fecha)>10 and activo='0'");
$Diferencia=$selectDIFF;

echo 
$Diferencia;


?>
¿Alguien me puede indicar el fallo y, ya puestos, la solución?

Muchas gracias por adelantado,
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #2 (permalink)  
Antiguo 07/04/2011, 05:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Casi lo tengo pero no doy con ello

Código MySQL:
Ver original
  1. DELETE FROM usuarios
  2. WHERE DATEDIFF(CURDATE(), fecha) > 10 AND activo='0'
El tema puede estar en que la condición necesaria es doble: No sólo que tengan más de 10 días, sino que además tengan ´"activo" en cero.
Pero el problema mayor es que no sabemos a priori qué es lo que está entrando en la variable, y si está respetando el formato de fecha. Si hay algún error, no se peude ver, y MySQL puede estar haciendo una conversión implícita incorrecta.
¿Estás seguro de que el campo "fecha" es DATE, no es así?
¿La fecha respeta el formato "aaaa-mm-dd"?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/04/2011, 22:47
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Casi lo tengo pero no doy con ello

Muchas gracias gnzsoloyo:

He provado tu sugerencia y obtengo este bonito error en MySQL:

Cita:
#1064 - 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 '*from usuarios WHERE datediff(CURDATE(),fecha)<10 and activo='0'' at line 1
DELETE * FROM usuarios WHERE datediff( CURDATE( ) , fecha ) <10 AND activo = '0'
con datediff( CURDATE( ) resaltados en rojo ¿Alguna idea?
Sigo investigando
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #4 (permalink)  
Antiguo 07/04/2011, 23:28
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Casi lo tengo pero no doy con ello

Lo encontré,

No le gustaba el * que yo insistia en poner al ver dormido tu respuesta

Muchas gracias,
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)

Etiquetas: Ninguno
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 00:01.