2015-08-16 2 views
1

Je stocke l'anniversaire de mes utilisateurs en format d'horodatage Unix (un nombre entier) dans la base de données MySQL.sélectionnez les utilisateurs dont l'anniversaire (horodaté) est X jours plus tard

Maintenant je veux envoyer un email aux utilisateurs que leur anniversaire est 30 jours plus tard.

Je sais que ci-dessous le code SQL est de sélectionner les utilisateurs qui leur anniversaire aujourd'hui:

SELECT * FROM members WHERE 
DATE_FORMAT(FROM_UNIXTIME(birthday),'%m-%d') = DATE_FORMAT(NOW(),'%m-%d') 

mais je ne sais pas comment changer pour mon but.

Je googlé trop et trouvé sur this similar question SO Mais toutes les réponses sont basées sur DATE anniversaire formaté alors que mon champ d'anniversaire est basé sur timeStamp créé par temps().

avez-vous une solution pour cela?

Répondre

1

Vous pouvez utiliser la fonction datediff:

SELECT * 
FROM members 
WHERE DATEDIFF(FROM_UNIXTIME(birthday), NOW()) <= 30 
+0

je lance ce code Mais cette erreur est survenue: FONCTION DATE_DIFF n'existe pas –

+0

@ahmad qui est une faute de frappe stupide, désolé. C'est supposé être 'datediff', pas' date_diff' (édité et corrigé). – Mureinik

+0

oui ça marche bien. bien sûr parce que je veux sélectionner les utilisateurs dont l'anniversaire est exactement 30 jours plus tard doit user = opérateur au lieu de <= –