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

SQL Procédural MySQL Discussion :

soustraire date d'un jour


Sujet :

SQL Procédural MySQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 181
    Par défaut soustraire date d'un jour
    bjour, voila j'ai en fait un champ contenant une date (2006-09-08 15:58:36) .

    Je voudrais que en faisant un UPDATE, ca soustrait un jour de la date. J'ai vu qu'il existait l'attribut SUBDATE, mais je ne vois pas trop la syntaxe combiné au UPDATE. Pouvez vous me dire quelle serait la commande exacte pour soustraire d'un jour mon champ 'last' de la table user_rss ? merci d avance de votre aide.


    UPDATE last SUBDATE (last, INTERVAL 1 DAY) FROM `user_rss`;

  2. #2
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    Je suis pas certain mais ... voici ton bonheur : Les petits papiers de SQLPro - Traitements temporels en SQL.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 181
    Par défaut
    Re,

    merci du lien trotters mais a priori, le petit SUBDATE suffirait pour faire ce que je souhaite. Qui l'as deja utilisé et pourrais me dire quelle syntaxe adopter avec le UPDATE please ?

  4. #4
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Bonjour,

    Ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE MaTable
       SET MonChampDate = SUBDATE (MonChampDate, INTERVAL 1 DAY)
     WHERE (clause identifiant les enrgistrements à mettre à jour);
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 181
    Par défaut
    lu Xo,

    j'ai tenté cela, (pour appliquer la maj a tout les ID de la table) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE phplist_user_rss SET last  = SUBDATE ('last', INTERVAL 1 DAY);

    mais msg d erreur de syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     MySQL a répondu:Documentation
    #1064 - You have an error in your SQL syntax near '('last', INTERVAL 1 DAY)' at line 1
    Une idée ?

  6. #6
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Citation Envoyé par metatron
    SUBDATE ('last',
    Pourquoi entourer last de quotes ? Ce n'est pas une chaine mais un nom de colonne...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 181
    Par défaut
    car j'ai essayé sans, et ca ne marchait pas, donc j'ai essayé avec, tout comme PhpMyAdmin le fait...mais NON ca ne vient pas de la :/

    argh quelqu un aurait une autre idée ou une autre syntaxe a proposer ?

  8. #8
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    ça n'a peut-être rien à voir mais tu devrais changer le nom de ton champs LAST et mettre DERNIER plutôt au moins tu seras sur qu'il ne le prend pas comme un mot réservé.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 181
    Par défaut
    lo non testé et meme soucis d erreur de syntaxe :/

    C QUOI QUI NE VA PAS DANS CETTE REQUETE ENFIN ! ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE phplist_user_rss SET last  = SUBDATE (last, INTERVAL 1 DAY);

  10. #10
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    2 choses :
    tu as essayé en faisant ta requête sur un tuple précis (en spécifiant avec un WHERE par exemple)
    tu as essayé en encadrant ton 1 de simples côtes ('1')

  11. #11
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Il faut procéder par étapes.

    D'abord essaie juste un SELECT SUBDATE (last, INTERVAL 1 DAY); (ou DATE_SUB qui est plus courant)...

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 181
    Par défaut
    hum..j'ai essayé donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DATE_SUB('last', INTERVAL 1 DAY);
    Quand je clique sur executer ca me valide bien la requete, mais ca m'affiche un champs :

    DATE_SUB('last', INTERVAL 1 DAY)
    NULL

    et la date ne change pas :/ j'ai un champs "last", de type datetime, avec la valeur "2006-09-11 09:56:25".

  13. #13
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    Tu es allé voir sur le site officiel de MySQL à la rubrique Date, il parle justement des DATE_SUB mais eux ils l'utilise sur un champ type DATE (il n'y a pas l'heure donc peut-être que ça influe).

    Sinon sur le lien que je t'ai donné au début(http://sqlpro.developpez.com/cours/gestiontemps/#L1.2.3)il fait des exemples en utilisant des opérateurs numériques
    TIMESTAMP '2001-12-24 16:12:30'
    -
    INTERVAL '8' DAY

    résultat : '2001-12-16 16:12:30'
    tu devrais essayer ça coute rien.

  14. #14
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Citation Envoyé par metatron
    hum..j'ai essayé donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DATE_SUB('last', INTERVAL 1 DAY);
    Sans les quote et avec "FROM phplist_user_rss" ça serait mieux...

    Tu n'es pas obligé de recopier texto les c....ries que je te donne, essaie de raisonner aussi par toi-même

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 181
    Par défaut
    Rebonjour, alors j'ai donc reussi a afficher mon champs "date", avec la valeur J-1, avec cette requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATE_SUB(last, INTERVAL 1 DAY) FROM `phplist_user_rss`;

    J'essaie donc maintenant de modifier ce champs date pas sa valeur soustrait d' 1 jour :

    table : phplist_user_rss
    champ : last


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `phplist_user_rss` SET last = DATE_SUB(last, INTERVAL 1 DAY) FROM `phplist_user_rss`   WHERE userid=85 ;
    et msg d'erreur :

    #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `phplist_user_rss` SET last = DATE_SUB( last, INTERVAL


    Avez vous une idée de ce qui ne va pas dans la syntaxe ? Merci d'avance de votre aide.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 181
    Par défaut
    résolu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE phplist_user_rss SET last = DATE_SUB(last, INTERVAL 1 DAY);

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

Discussions similaires

  1. [AC-2010] Soustraire ou ajouter des jours ouvrés à une date
    Par typouce dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 28/01/2015, 13h01
  2. soustraire un nombre de jours d'une date
    Par air75 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/02/2009, 23h16
  3. soustraire date de 35 jours
    Par babalastar dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 21/10/2008, 14h57
  4. Soustraire une date avec des jours et jours ouvrés
    Par celiaaa dans le forum VBA Access
    Réponses: 5
    Dernier message: 31/05/2007, 22h37
  5. [Dates] Soustraire un nombre de jour à une date
    Par lesgars dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2005, 14h43

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