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

Langage PHP Discussion :

[Dates] Soustraire un jour à une date [Fait]


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut [Dates] Soustraire un jour à une date
    Bonjour à tous,
    Voilà, j'ai une date qui de cette forme :
    2007-01-16 22:55:11
    Et je voudrais obtenir cela :
    2007-01-15 22:55:11

    J'ai donc voulu faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $val_date=$date-1;
    Mais j'obitens ça :
    2006
    Quelqu'un connait-il la méthode pour pouvoir soustraire un jour à une date donnée ?
    Merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    je veux lapinou aussi

    la date tu veux la modifier en php ou en sql?

    explique un peu plus le cadre dans laquelle tu l'utilises
    (tu l'affiches, tu l'utilises dans une requête, tu la récupères par une requête..)

    En sql tu peux faire par exemple un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ADDDATE(champ_date, INTERVAL -1 DAY)

  3. #3
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Bon alors, je vais te balancer mon script, ca sera plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <html>
    <body>
    <?
    set_time_limit(0);
    $connexion = mysql_connect(localhost, "user");
    $db=mysql_select_db("base", $connexion);
    $requete=mysql_query("SELECT MAX(DATE) AS DATE FROM TABLE1 WHERE DATE<>'NULL';");
    $row=mysql_fetch_object($requete);
    echo $row->DATE."<br>";
    //$DATE=$row->DATE-1; C'est  ici que je voudrai modifer la date
    echo $DATE;
    $query=mysql_query("UPDATE TABLE1 SET C1='NOT DOWNLOAD' WHERE C2<>'NULL' AND C3='t' AND C4='N' AND C5='NULL' AND DATE<'".$DATE."';");
    ?>
    </body>
    </html>

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    je contourne le pb (je suis paresseux je cherche toujours la solution la plus facile)

    au lieu d'enlever 1 à $date
    je vais rajouter 1 à l'autre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query=mysql_query("UPDATE TABLE1 SET C1='NOT DOWNLOAD' WHERE C2<>'NULL' AND C3='t' AND C4='N' AND C5='NULL' AND ADDDATE(DATE, INTERVAL 1 DAY)<'".$DATE."';");

  5. #5
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Je comprends pas très bien ta solution. Peux-tu me l'expliquer ?

  6. #6
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    C'est bon j'ai trouvé la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    list($annee, $mois, $jour) = sscanf($row->DATE, "%d-%d-%d");
    $a=$jour-1;
    $DATE=$annee."-0".$mois."-".$a;
    echo $DATE;
    Et ca me fait le boulot. Merci quand meme pour l'aide. Au fait, toi aussi tu veux lapinou dans ta signature ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    elle marche pas?

    sinon je t'explique

    tu récupères dans $DATE la date à laquelle tu veux retirer un jour pour la comparer au champ DATE
    tu fais
    $DATE - 1 jour
    ensuite tu compares
    DATE < $DATE

    je te propose de ne pas changer la valeur de $DATE
    mais celle du champ date dans la requete quand tu fais la comparaison

    et date1 < date2 -1 est équivalent à date1+1 < date2 (ça c juste des maths)


    alors dans ta requete je remplace DATE (la valeur du champ DATE) par sa valeur + 1 jour cad
    ADDDATE(DATE, INTERVAL 1 DAY)



    je proposais ça car je crois que mysql est efficace avec les manipulations de date
    et oui lapinou (mais je n'ai peut être pas assez posté pour avoir le droit à une signature.. je n'ai pas trouvé l'endroit dans les options)

  8. #8
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Ah d'accord je comprends mieux. J'ai pas testé ta solution. Je crois que je vais gardé la mienne mais je garde la tienne dans un coin, elle pourrait servir. Pour la signature, il me semble qu'il faut atteindre les 100 messages pour avoir accès aux signatures.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    pour manipuler les dates sql est très pratique
    mais souvent on l'ignore

    et des fois au lieu de faire 10 lignes (j'ai vu pire) de manipulation en php
    avec 2-3 fonctions sql on a la même chose en une seule requete

    sql sait faire aussi pas mal de choses avec les chaines de charactères (mais ne possède pas toujours les mêmes fonctions que php)
    et sûrement plein de chose que je ne sais pas...


    et pour lapinou c bon, ça devait être plutot 50 posts

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

Discussions similaires

  1. [Dates] Ajouter 15 jours à une date
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 28/02/2008, 11h50
  2. [Dates] enlever 8 jours à une date
    Par viny dans le forum Langage
    Réponses: 10
    Dernier message: 04/01/2008, 16h28
  3. [Dates] Fonction date: ajouter 3 jours à une date
    Par bobic dans le forum Langage
    Réponses: 8
    Dernier message: 12/03/2007, 12h05
  4. [VBA-E] soustraire un jour à une date en VBA
    Par fast&furious dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/01/2007, 22h42
  5. Réponses: 7
    Dernier message: 22/11/2006, 10h14

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