2010-11-08 8 views
2

J'insère une date de naissance à travers un champ de texte dans un tableau. Ici, j'ai besoin d'une requête mysql qui vérifie le mois en cours et la date actuelle avec l'une des dates correspondant à la base de données. Pas besoin de vérifier l'année parce que cela est destiné à afficher une alerte à l'anniversaire, Quelqu'un peut-il avoir l'idée de la requête SQL pour le faire dans une seule requête .. Ici, je l'utilise avec PHP et MySQL. Merci à l'avancePHP MySQL Comparaison de date

Mon exemple de code est:

<?php 
$con = mysql_connect("localhost","root",""); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("test", $con); 

$my_birth_date = "2010-11-08"; 

$result = mysql_query("SELECT * FROM mydate WHERE DAYOFMONTH($my_birth_date) = DAYOFMONTH(NOW()) AND MONTH($my_birth_date) = MONTH(NOW()) 
"); 


while($row = mysql_fetch_array($result)) 
    { 
    echo $row['my_name'] . " " . $row['my_dob']; 
    echo "<br />"; 
    } 

mysql_close($con); 
?> 

Mon schéma de table est: my_name varchar (50) Date de my_dob

La date est stockée dans la table comme ce format: 2010-01 -20 (Année-Mois-Jour) Maintenant, il affiche une page vierge sans aucun enregistrement, même si i a des enregistrements correspondants. Quelqu'un peut-il donner quelques suggestions

+0

Veuillez fournir l'instruction CREATE TABLE. Si vous stockez une date, la colonne doit utiliser un type de données DATETIME ou DATE, et non une chaîne, car vous devrez le convertir en un type de données lié à la date avant de pouvoir effectuer des opérations/comparaisons de dates. –

+0

comment la date est-elle enregistrée dans la base de données? – Brady

Répondre

1

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

Vous pouvez trouver toutes les fonctions Date de & de temps disponibles dans MySQL. Vous voudrez probablement utiliser les fonctions de DAYOFMONTH et mois pour comparer :)

donc quelque chose comme:

SELECT * FROM table WHERE DAYOFMONTH(birthday) = DAYOFMONTH(NOW()) AND MONTH(birthday) = MONTH(NOW()) 

Il pourrait y avoir des moyens plus efficaces pour le faire, mais ce que je vais essayer d'abord ! J'espère que cela pourra aider!

+0

Hai Gazlion..Merci de votre réponse – SK0004

+0

@ SK0004 - NP;) – Gazillion

+0

Vous voudrez peut-être modifier votre question d'origine avec cette information. Avez-vous une erreur? À quoi ressemble votre schéma de table? – Gazillion

0

Votre exemple de code doit renvoyer tous les enregistrements de la table "mydate".

Essayez la requête directement sur le serveur (dans un terminal ou avec une application comme phpMyAdmin) pour vérifier si elle renvoie des données. Utilisez le code mysql_error pour déboguer votre code.

Exemple:

<?php 
$link = mysql_connect("localhost", "mysql_user", "mysql_password"); 

mysql_select_db("nonexistentdb", $link); 
echo mysql_errno($link) . ": " . mysql_error($link). "\n"; 

mysql_select_db("kossu", $link); 
mysql_query("SELECT * FROM nonexistenttable", $link); 
echo mysql_errno($link) . ": " . mysql_error($link) . "\n"; 
?> 

mysql_error : php.net.

Ensuite, vous devriez voir où il se bloque.