Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/09/2006, 16h47   #1
Invité régulier
 
Inscription : juin 2005
Messages : 164
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 164
Points : 8
Points : 8
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`;
metatron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2006, 17h01   #2
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605

Je suis pas certain mais ... voici ton bonheur : Les petits papiers de SQLPro - Traitements temporels en SQL.
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2006, 10h22   #3
Invité régulier
 
Inscription : juin 2005
Messages : 164
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 164
Points : 8
Points : 8
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 ?
metatron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2006, 13h12   #4
Xo
Expert Confirmé
 
Avatar de Xo
 
Inscription : janvier 2005
Messages : 2 701
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : janvier 2005
Messages : 2 701
Points : 3 237
Points : 3 237
Envoyer un message via Skype™ à Xo
Bonjour,

Ceci ?

Code :
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
Xo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2006, 14h28   #5
Invité régulier
 
Inscription : juin 2005
Messages : 164
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 164
Points : 8
Points : 8
lu Xo,

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

Code :
UPDATE phplist_user_rss SET last  = SUBDATE ('last', INTERVAL 1 DAY);

mais msg d erreur de syntaxe :

Code :
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 ?
metatron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2006, 15h01   #6
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Citation:
Envoyé par metatron
SUBDATE ('last',
Pourquoi entourer last de quotes ? Ce n'est pas une chaine mais un nom de colonne...
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2006, 15h07   #7
Invité régulier
 
Inscription : juin 2005
Messages : 164
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 164
Points : 8
Points : 8
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 ?
metatron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2006, 15h20   #8
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605
ç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é.
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2006, 16h49   #9
Invité régulier
 
Inscription : juin 2005
Messages : 164
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 164
Points : 8
Points : 8
lo non testé et meme soucis d erreur de syntaxe :/

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

Code :
UPDATE phplist_user_rss SET last  = SUBDATE (last, INTERVAL 1 DAY);
metatron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2006, 17h35   #10
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605
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')
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2006, 18h14   #11
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Il faut procéder par étapes.

D'abord essaie juste un SELECT SUBDATE (last, INTERVAL 1 DAY); (ou DATE_SUB qui est plus courant)...
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2006, 23h17   #12
Invité régulier
 
Inscription : juin 2005
Messages : 164
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 164
Points : 8
Points : 8
hum..j'ai essayé donc :
Code :
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".
metatron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2006, 08h22   #13
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605
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
Citation:
TIMESTAMP '2001-12-24 16:12:30'
-
INTERVAL '8' DAY

résultat : '2001-12-16 16:12:30'
tu devrais essayer ça coute rien.
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2006, 09h29   #14
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Citation:
Envoyé par metatron
hum..j'ai essayé donc :
Code :
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
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 15h32   #15
Invité régulier
 
Inscription : juin 2005
Messages : 164
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 164
Points : 8
Points : 8
Rebonjour, alors j'ai donc reussi a afficher mon champs "date", avec la valeur J-1, avec cette requete :

Code :
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 :
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.
metatron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 17h49   #16
Invité régulier
 
Inscription : juin 2005
Messages : 164
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 164
Points : 8
Points : 8
résolu :

Code :
UPDATE phplist_user_rss SET last = DATE_SUB(last, INTERVAL 1 DAY);
metatron est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h41.


 
 
 
 
Partenaires

Hébergement Web