Page 1 sur 1

syntaxe where et différence de dates

Posté : 01 avr. 2016, 00:28
par donkeykick
Salut !

Je cherche la bonne syntaxe pour écrire la condition suivante les personnes qui se sont inscrites il y a 24h, il y a 48h, il y a 72h..?

J'ai lu que les mktime, time etc n'était pas la bonne façon de faire.

strtotime ? On peut gérer dans le select directement ?

do_ok

Re: syntaxe where et différence de dates

Posté : 01 avr. 2016, 09:07
par Maitrepylos
Comment gère tu les dates dans ta db ?

Re: syntaxe where et différence de dates

Posté : 01 avr. 2016, 10:19
par donkeykick
Bonjour Maitre :)

De façon classique un date ou datetime au format YY-mm-dddd.

Re: syntaxe where et différence de dates

Posté : 01 avr. 2016, 10:28
par Maitrepylos
Ok, donc si c'est du MySQL comme ceci

Code : Tout sélectionner

SELECT * FROM table WHERE monChampDate = NOW() - INTERVAL 1 DAY

Re: syntaxe where et différence de dates

Posté : 01 avr. 2016, 10:44
par donkeykick
Waouh, je ne connaissais pas cette syntaxe.

J'aurai encore fait un truc compliqué ^^

Par contre j'ai testé et ça me renvoie pas de lignes avec mon datetime pourtant inférieur à 24h #-o

Re: syntaxe where et différence de dates

Posté : 01 avr. 2016, 10:50
par Maitrepylos
Je peux voir un jeu de données ?

Re: syntaxe where et différence de dates

Posté : 01 avr. 2016, 11:08
par Spols
Ok, donc si c'est du MySQL comme ceci

Code : Tout sélectionner

SELECT * FROM table WHERE monChampDate = NOW() - INTERVAL 1 DAY
C'est pas un > qu'il faut plutot que le = ?

Re: syntaxe where et différence de dates

Posté : 01 avr. 2016, 11:11
par donkeykick
Voilà j'ai fait ça :
SELECT ID_Ad, INSCRIP_Ad FROM adherents WHERE INSCRIP_Ad = NOW() - INTERVAL 1 DAY
Avec ce jeu :

Code : Tout sélectionner

-- -- Structure de la table `adherents` -- CREATE TABLE IF NOT EXISTS `adherents` ( `ID_Ad` int(20) NOT NULL AUTO_INCREMENT, `NOM_Ad` varchar(20) NOT NULL, `PRENOM_Ad` varchar(20) NOT NULL, `INSCRIP_Ad` datetime NOT NULL, `PREF_Ad` varchar(20) NOT NULL, PRIMARY KEY (`ID_Ad`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; -- -- Contenu de la table `adherents` -- INSERT INTO `adherents` (`ID_Ad`, `NOM_Ad`, `PRENOM_Ad`, `INSCRIP_Ad`, `PREF_Ad`) VALUES (1, 'Mortier', 'Emilie', '2016-03-31 23:01:24', '2'), (2, 'Dauney', 'Pascal', '2016-03-31 20:50:03', '3'), (3, 'Cavailles', 'Michel', '2016-02-11 10:00:53', '1');
A chaque fois ça me renvoie résultat vide 8-|

Re: syntaxe where et différence de dates

Posté : 01 avr. 2016, 11:47
par Maitrepylos
Exactitude quand tu nous tiens.
Tu as des heures dans tes heures.
si tu lances la requête suivante :

Code : Tout sélectionner

SELECT NOW() - INTERVAL 1 DAY from adherents;
Tu verras que ce n'est pas égale à tes lignes insérer, tu dois donc jouer un peu dans ta requête.
Par exemple pour les 24 h je ferais ceci :

Code : Tout sélectionner

SELECT ID_Ad, INSCRIP_Ad FROM adherents WHERE INSCRIP_Ad >= NOW() - INTERVAL 1 DAY
Pour les 48h à toi de chercher un peu ;)

Re: syntaxe where et différence de dates

Posté : 01 avr. 2016, 12:05
par donkeykick
Oui maitre, après je crois en effet que le souci venait du INSCRIP_Ad > NOW() - INTERVAL 1 DAY à la place de INSCRIP_Ad = NOW() - INTERVAL 1 DAY

Je dirai 2 DAY ? :p

Re: syntaxe where et différence de dates

Posté : 01 avr. 2016, 12:10
par Maitrepylos
Hum si tu dis 2 DAY avec la même configuration, tu va aussi attraper ceux de moins de 24h , tu vois c'est pas simple ;)

Re: syntaxe where et différence de dates

Posté : 01 avr. 2016, 12:15
par donkeykick
Ok je corrige
INSCRIP_Ad > NOW() - INTERVAL 2 DAY AND INSCRIP_Ad < NOW() - INTERVAL 1 DAY ?