IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

requete avec date du jour - 30 [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 77
    Par défaut requete avec date du jour - 30
    bonjour

    je cherche l'expression pour mettre dans une requete la date du jour moins 30 jours.

    surement facile pour vous

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 298
    Par défaut
    Comme tu n'indique pas avec quelle base de donnée tu travaille, je vais supposer que c'est avec MySql.

    Manuel MySql => Fonctions Date et Heure => 1° exemple
    http://dev.mysql.com/doc/mysql/fr/date-and-time-functions.html
    Voici un exemple d'utilisation des fonctions de date. La requête suivante sélectionne toutes les lignes dont la colonne date_col représente une date de moins de 30 jours :

    mysql> SELECT quelquechose FROM nom_de_table
    WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;

    Notez que cette requête va aussi sélectionner des lignes dont les dates sont dans le futur.
    je te laisse adapter à ton besoin précis.
    Ce n'est pas la seule solution, tu as d'autres fonctions comme datediff() par exemple.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 77
    Par défaut
    merci mais c'est la premiere page que j'ai ete voir avant de poser la question et helas je n'arrive pas à adapter à mon besoin c'est à dire uniquement les enregistrement de la date du jour moins 30 par exemple aujourd'hui il faudrait les enregistrements du 26 aout 2005.

    voila

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 298
    Par défaut
    Citation Envoyé par le69
    merci mais c'est la premiere page que j'ai ete voir avant de poser la question et helas je n'arrive pas à adapter à mon besoin c'est à dire uniquement les enregistrement de la date du jour moins 30 par exemple aujourd'hui il faudrait les enregistrements du 26 aout 2005.

    voila
    Soit tu veux la date du jour - 30 et là c'est facile.

    Soit tu veux le même jour du mois précédent, et là c'est bc plus dur.
    Par exemple, si tu prend le 30 mars, le même jour du mois précédent n'existe pas. Une simple requête ne te donnera pas la solution, il faut implémenter un calendrier.

    Si tu veux, la date du jour - 30, tu as la réponse dans le manuel mysql.

  5. #5
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    un truc comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND date_col BETWEEN DATE_SUB( NOW( ) , INTERVAL 30 DAY ) AND NOW( )
    ?

  6. #6
    Membre éprouvé Avatar de cynferdd
    Profil pro
    Analyste Développeur .Net, PHP, SQL Server
    Inscrit en
    Avril 2003
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Développeur .Net, PHP, SQL Server

    Informations forums :
    Inscription : Avril 2003
    Messages : 154
    Par défaut
    ou sinon tu récupère la date courante, dans cette date tu récupère le mois que tu décrémente de 1, tu stocke dans une nouvelle variable, et tu fais la recherche à partir de cette nouvelle date.
    voir ici pour plus d'infos sur les fonctions php de dates : http://fr2.php.net/date
    (fonctions mktime() et date())

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 77
    Par défaut
    Voila la solution pour ceux que ca interesse...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM `table` WHERE  TO_DAYS(NOW()) - TO_DAYS(datab)  = 30  ";

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Ce n'est pas LA solution, mais UNE solution.

    En voici 2 autres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = 'SELECT * FROM `table` WHERE  DATE_ADD(datab, INTERVAL 30 DAY)  = CURDATE()'; 
    $sql = 'SELECT * FROM `table` WHERE  DATE_SUB(CURDATE(), INTERVAL 30 DAY)  = datetab';

  9. #9
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 15
    Par défaut Requete : datant d'il y a 30 jours maxi
    Citation Envoyé par le69 Voir le message
    bonjour

    je cherche l'expression pour mettre dans une requete la date du jour moins 30 jours.

    surement facile pour vous
    voilà une façon simple de récupérer des éléments d'une table datants de 30 jours maximum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_Recordset = "SELECT champs FROM table WHERE ((DAYOFYEAR(CURRENT_DATE)-DAYOFYEAR(Date))<31) AND YEAR(Date)=YEAR(CURRENT_DATE)";
    Cette requête ici recherche les champs (à changer) dans la table (à changer aussi) dont la Date (champ de type DATE/DATE-TIME) et inférieure à 31 jours (ben oui 31 pour avoir ceux qui ont 30 jours )

  10. #10
    Membre averti
    Homme Profil pro
    Mécanicien / Infographiste / Développeur en formation
    Inscrit en
    Octobre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Mécanicien / Infographiste / Développeur en formation

    Informations forums :
    Inscription : Octobre 2012
    Messages : 38
    Par défaut
    Bonjour,

    Laquelle de ces réponses est la plus optimisée ou la plus adaptée ? J'ai le même besoin et du coup je ne sais pas trop dans quel contexte on utilise telle ou telle réponse donnée ici. Deux requêtes peuvent avoir le même résultat mais pas forcement le même contexte d'utilisation...

    Par exemple (et c'est du au fait que je sois débutant) j'ai du mal à faire la différence dans certaines réponses entre qui est la fonction() de qui est le nom de variable, qui est le nom de colonne etc..

    (je mate la manuel sql en parallèle de ce message).

    Thx .

  11. #11
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_Recordset = "SELECT champs FROM table WHERE ((DAYOFYEAR(CURRENT_DATE)-DAYOFYEAR(Date))<31) AND YEAR(Date)=YEAR(CURRENT_DATE)";
    Cette méthode est à bannir puisqu'elle fonctionnera mal en début d'année (on est limité par le YEAR(Date) = YEAR(CURRENT_DATE).

    Pour les trois autres méthodes, je ne crois pas qu'il y ai une grande différence entre elles, à toi de voir l'écriture qui est la plus explicite pour toi donc !
    Pour t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM `myTable` WHERE  TO_DAYS(NOW()) - TO_DAYS(myDate)  = 30"
    30 est l'intervalle entre la date du jour (récupérée par la fonction NOW() et la date de chaque ligne traitée (en considérant le champs myDate de la table myTable).
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  12. #12
    Membre averti
    Homme Profil pro
    Mécanicien / Infographiste / Développeur en formation
    Inscrit en
    Octobre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Mécanicien / Infographiste / Développeur en formation

    Informations forums :
    Inscription : Octobre 2012
    Messages : 38
    Par défaut
    Okey donc si je code quelque chose comme ça ca doit marcher selon toi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /* MAKE A QUERY WHICH RECOVERS ADS */
     
        $ads_query = "select * from entreprise_offres
                    where  TO_DAYS(NOW()) - TO_DAYS(date_publi) <= 10";
     
        $results = mysql_query($ads_query);

  13. #13
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ads_query = "select * from entreprise_offres
                    where  TO_DAYS(NOW()) - TO_DAYS(date_publi) <= 10";
     
        $results = mysql_query($ads_query);
    le problème avec cette requête elle sélectionnera outre les enregistrements de moins de 10j mais aussi les enregistrements dont la date (date_publi) est postérieure à aujourd'hui.Il te faut ajouter une clause sql qui exclue toutes les dates futures:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ads_query = "select * from entreprise_offres
                    where  (TO_DAYS(NOW()) - TO_DAYS(date_publi) )<= 10 AND date_publi<=now()";

  14. #14
    Membre averti
    Homme Profil pro
    Mécanicien / Infographiste / Développeur en formation
    Inscrit en
    Octobre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Mécanicien / Infographiste / Développeur en formation

    Informations forums :
    Inscription : Octobre 2012
    Messages : 38
    Par défaut
    Ah ouai pas bête, voilà du coup ma requête terminée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ads_query = "select * from 'entreprise_offres'
                     where TO_DAYS(NOW()) - TO_DAYS(date_publi) <= 10 and date_publi <= NOW()
                     order by CURRENT_DATE desc
                     LIMIT 10";
    Car j'ai besoin de récupérer non seulement les annonces datant de moins de 10 jours mais dans une limite de 10 pour ne pas surcharger visuellement mon API pour les internautes. Et le tout classé par date du plus récent au plus ancien. J'ai rajouté aussi les simple côtes pour le nom de la table, apparemment il les faut.

    Vous connaissez par hasard un bon tuto qui explique comment connecter une API à une BDD distante hébergée chez OVH ? Car je n'ai que des aides pour se connecte en local je pense. Je ne vois nulle part d'aide montrant ne serai ce que l'URL distante. ce que j'ai trouvé et appliqué :
    - http://www.netalya.com/fr/cours-php-requetes-mysql.asp
    - http://www.netalya.com/fr/cours-php-...es-mysql-2.asp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DeskI V5-V6] Requete avec date du jour - 6 mois
    Par lecowboydetchernobyl dans le forum Débuter
    Réponses: 17
    Dernier message: 30/04/2009, 14h49
  2. [Access] requête avec date
    Par hiko-seijuro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/08/2006, 09h05
  3. [debutant]Probleme de requete avec date
    Par shub dans le forum Access
    Réponses: 9
    Dernier message: 12/05/2006, 10h01
  4. requete avec date et heure
    Par robert_trudel dans le forum Access
    Réponses: 2
    Dernier message: 26/04/2006, 00h15
  5. [MySQL] requete avec date
    Par le69 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 04/12/2005, 21h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo