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

 PostgreSQL Discussion :

Modification en masse d'années de dates ? [9.2]


Sujet :

PostgreSQL

  1. #1
    Candidat au Club
    Femme Profil pro
    curieuse
    Inscrit en
    Mai 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : curieuse

    Informations forums :
    Inscription : Mai 2018
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Modification en masse d'années de dates ?
    Bonjour,

    Je débute en matière de base de données, et toutes mes excuses si ma question peut paraître nulle, mais après des heures de recherche, je n'ai toujours pas trouvé de solution...

    J'ai une base de données en 9.2
    Ma base contient des tables avec des dates au format YYYY-MM-DD, dont certaines ont été saisies de manière erronée (du genre 0012-10-15 au lieu de 2012-10-15).
    J'ai trouvé comment remplacer une date par une autre, mais compte tenu du nombre de dates à modifier (dans différentes tables), je recherche une façon d'automatiser la correction.
    J'aimerais une commande du type :
    "dans la colonne datefin de la table vieetb_affaire, si l'année de la date (format YYYY-MM-DD) commence par 00, alors remplacer 00 par 20".
    Je me dis qu'il doit bien exister qq chose pour gérer ces modifications en masse, mais je n'ai pas su le trouver et tous mes essais ont échoués.

    Si qq'un a la gentillesse de vouloir m'aider, cela me rendrait bien service...
    En vous remerciant par avance,

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 778
    Points
    30 778
    Par défaut
    Quel est le type de la colonne ? Si c'est une date, le format n'a pas d'incidence sur la mise à à jour. Si c'est une chaîne de caractères, c'est une erreur de modélisation, mais la mise à jour est relativement simple.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Candidat au Club
    Femme Profil pro
    curieuse
    Inscrit en
    Mai 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : curieuse

    Informations forums :
    Inscription : Mai 2018
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse.
    Ma colonne est bien de type date.
    Saurais-tu comment automatiser les modifications ?
    J'ai fait le point hier soir et j'ai plus de 15 colonnes contenant des dates erronées...
    Merci pour ton aide,

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 778
    Points
    30 778
    Par défaut
    Il faudra exécuter une requête par colonne à modifier.
    En SQL normalisé, ça s'écrirait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update  matable
    set     macolonne   = macolonne + interval 2000 year
    where   extract(year from macolonne) / 100 < 1
    Je ne pratique pas PostgreSQL et jen n pourrai pas t'assurer que cela soit pris en compte tel quel.
    Je te laisse le soin de chercher la syntaxe correspondante dans pg, si nécessaire.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Candidat au Club
    Femme Profil pro
    curieuse
    Inscrit en
    Mai 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : curieuse

    Informations forums :
    Inscription : Mai 2018
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour ton aide !!!
    Ca fonctionne super avec la commande ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update vieetb_affaire
    set datefin = datefin + interval '2000 year' 
    where extract(year from datefin) / 100 < 1;
    Je n'aurais jamais pensé à cette condition pour discriminer les dates.
    Je vais le garder bien au chaud pour une prochaine fois ;-)
    Et c'est parti pour les corrections !!!
    Merci encore

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/11/2007, 17h30
  2. Modification d'un champ de type DATE
    Par stanley dans le forum Bases de données
    Réponses: 6
    Dernier message: 14/02/2007, 11h44
  3. [Dates] Ajouter une année à une date
    Par viny dans le forum Langage
    Réponses: 8
    Dernier message: 22/12/2006, 01h16
  4. Soustraction d'année à une date
    Par spirou33 dans le forum Access
    Réponses: 2
    Dernier message: 09/01/2006, 14h30
  5. Ajouter une année à la date en cours
    Par marie10 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/08/2005, 12h30

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