Reculez de plusieurs mois, Date ou MySQL ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Reculez de plusieurs mois, Date ou MySQL ?

par Sophos » 20 juin 2006, 10:24

lol, merci beaucoup, vs êtes vrt sympas de répondre aussi vite.

Je vais au plus vite corriger cette erreur, merci beaucoup !! :wink:

par ouckileou » 20 juin 2006, 10:15

:lol: Toujours la même erreur qui revient :

`Date` >= DATE_SUB(NOW(), INTERVAL 1 MONTH) => 20/05

AND `Date` < DATE_SUB(NOW(), INTERVAL 2 MONTH) => 20/04

Comment une date peut-elle être supérieure au 20 mai, et inférieure au 20 avril ? :)

Tu peux aussi simplifier un peu en utilisant BETWEEN

par Sophos » 20 juin 2006, 10:13

Reuh, ^^

Code : Tout sélectionner

`Date` >= DATE_SUB(NOW(), INTERVAL 1 MONTH) AND `Date` < DATE_SUB(NOW(), INTERVAL 2 MONTH) order by Date ASC
Voila le code que j'ai utilisé, donc la normalement je dois avoir les entrée regroupé par mois, dans ce cas, les entrées enregistré il y a un mois non ?

Merci

par ouckileou » 20 juin 2006, 09:43

Si tu regardes dans la doc de DATE_SUB : http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html

Tu verras que tu peux utiliser différents paramètres pour l'intervalle, pas forcément des jours

Donc cette requête te renverra la date d'il y a un mois :)

Code : Tout sélectionner

SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH);

par Invité » 20 juin 2006, 09:25

4 - Obtenir une date dans le futur/le passé

avec PHP :
<?php
$date = Array('annee'=>date('Y'), 'mois'=>date('m'), 'jour'=>date('d'));
$N = 31;

// mktime fait automatiquement le calcul
$time = mktime(00, 00, 00, $date['mois'], $date['jour']+$N, $date['annee']);
$dansNjours = date('d/m/Y', $time);
echo $dansNjours;
?>
avec MySQL :
Code:

Code : Tout sélectionner

SELECT DATE_ADD(NOW(),INTERVAL 5 DAY); # le futur SELECT DATE_SUB(NOW(), INTERVAL 5 DAY); # le passé
Je dois donc faire un

Code : Tout sélectionner

SELECT DATE_SUB(NOW(), INTERVAL 31 DAY); # le passé
Or il faut que je crée un tableau avec le nombre de jours de chaque mois ? car si le mois en question n'as que 30 ou en fevrier quin'as que 28 jours ca va me retoruner deux mois en arrière et non un seul mois en arrière.

A moin qu'on peut considérer cela comme un detail a deux ou trois jours près...

Merci

par Ryle » 19 juin 2006, 12:40

Cela peut effectivement se faire en php ou en sql. Tu devrais trouver ton bonheur dans la FAQ :

Quelques petites manipulations avec les dates (PHP/MySQL)
:)

Reculez de plusieurs mois, Date ou MySQL ?

par Sophos » 19 juin 2006, 12:16

Bonjour,

J'ai un soucis au niveau de traitement de date. Dans ma base SQL, (MySQL) j'ai plusieurs données avec, notamment, la date de leur entée.
Je souhaite récupérer les entrées d'il y a deux, trois, et 6 mois.
Je ne sais pas si je dois effectuer la requete SQL avec comme parametre,
//Il y a deux mois
$mois2 = Date("m")-2;
//requete MySQL
$req = "SELECT champs1, champs2, Date from table where MONTH(date)=$mois2 order by Date ASC";
Ou s'il existe une fonction en MySQL qui permet directement de gérer ceci. Car si je suis en janvier et que je souhaite aller deux mois en arrière le script ci dessus me retournera -1 (01-2=-1) ce qui vas bien sur poser problème.

Merci