mysqli a préparé des déclarations avec l'article

Ma question est semblable à [ceci] [1], mais la solution fournie là ne fonctionne pas pour moi. J'ai un DB et j'ai une colonne appelée birth qui contient une date au format de l' year-day-month 00:00:00 . Maintenant, je souhaite extraire de la DB tous les loggings dont la naissance est entre deux dates. La valeur de birth a été insérée dans le DB avec ce code

 $date = $day . "-" . $month. "-" . $year; $a = strptime($date, '%d-%m-%Y'); $DB_date = date('Ymd H:i:s',mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900)); 

Pour extraire les dates, j'utilise ce code:

 $stmt = $conn->prepare('SELECT * FROM database WHERE `birth` BETWEEN ? AND ?'); $start_date = '1990-01-01'; $stop_date = '1995-01-01'; $stmt->bind_param('ss',$start_date,$stop_date); $stmt->execute(); $result = $stmt->get_result(); 

mais il ne trouve rien, donc $result->num_rows est égal à 0 et il ne donne pas d'erreurs, donc le problème doit être dans la comparaison des dates.

Le format de la colonne de naissance est minm heure min sec. Mais dans votre clause où vous ignorez un deuxième facteur d'heure.

Remplacer:

 $start_date = '1990-01-01'; $stop_date = '1995-01-01'; 

Avec ça:

 $start_date = '1990-01-01 00:00:00'; $stop_date = '1995-01-01 00:00:00'; 

Essaye-le bien et laissez-moi savoir si cela fonctionne

J'ai trouvé la solution

Le code dans ma question fonctionne si le type de données de la colonne dans la database est datetime et vous devez également vous assurer que $start_date est antérieur à $stop_date . Je me request toujours pourquoi cela ne fonctionnait pas avec le type de données de la date .