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

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

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 :
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 ?