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 :

Date non précise, quel type de champ ?


Sujet :

PostgreSQL

Vue hybride

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Par défaut Date non précise, quel type de champ ?
    Hello à tous,

    Je souhaite enregistrer des dates non précises : uniquement l'année ou uniquement le mois, l'heure... Ou la date complète.

    Avec Mysql, un champ datetime peux recevoir 2008-00-00 00:00:00 comme valeur (ou 0000-07-00 00:00:00)

    Comment faire avec PostgreSQL ?

    Merci ++

  2. #2
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Citation Envoyé par YvesTan Voir le message
    Avec Mysql, un champ datetime peux recevoir 2008-00-00 00:00:00 comme valeur (ou 0000-07-00 00:00:00)
    C'est parce qu'avec MySQL, niveau normes SQL et qualité de données, on repassera ... C'est comme ça que tu te retrouves avec des 30 février dans ta base ...

    0000-07-00 n'est pas une date valide, donc impossible de l'insérer, point bas.
    Ta date doit toujours être valide, si tu ne mets que l'année, il faut mettre par exemple arbitrairement YYYY-01-01 mais comment distinguer la date 2008-01-01 de l'année 2008 tout court ?

    Je pense que ton modèle de données est mauvais, si tu veux juste une année, un mois ou un jour, il faut des colonnes de type entier
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    Par défaut
    Bonjour,

    effectivement, sur postgresql il semble qu'on ne puisse avoir le type "année d'une date" :
    http://sqlpro.developpez.com/cours/sqlaz/fonctions/

    mais on peut sélectionner une partie de date et donc l'année :
    http://sqlzoo.net/fun_datepart

    seul problème, il semble que ça ne soit valable que pour les sélection et comme le dit Scheu, il faut utiliser un entier si l'on veut entrer une année dans la base.

    à +

    cordialement,

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Par défaut
    Merci pour vos réponses. Je vais donc passer par des entiers !

    Dommage qu'il n'y ai pas quelques choses de prévu pour ça. Dans mon cas, il s'agit d'un base de données sur des évènements de l'antiquité dont on ne connais pas forcément la date exacte

  5. #5
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Citation Envoyé par YvesTan Voir le message
    Dommage qu'il n'y ai pas quelques choses de prévu pour ça.
    Heureusement plutôt, sinon tu te retrouverais avec plein de dates non valides comme dans MySQL ...
    Tu n'as qu'à créer 3 colonnes de type entier qui seraient année, mois, jour, et si par exemple pour une date tu ne connais que l'année, tu laisse les colonnes mois et jour à NULL, c'est le plus propre
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  6. #6
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    Par défaut
    Bonjour,

    est-ce pertinent de créer deux colonnes : l'une avec la date normale (ymd), et l'autre qui soit le résultat d'une requête qui sélectionne la date (juste l'année) de la 1ere colonne avec un déclencheur (sur la 1ere colonne) lors d'un insert ?

    je doute qu'on puisse faire un déclencheur sur une seule colonne.

    un déclencheur après update sur la même table, il parait que c'est pas très conseillé ???

    qu'en pensez vous ??

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/10/2008, 09h21
  2. Quel type de champs pour les case a cocher
    Par leroidje dans le forum Autres
    Réponses: 1
    Dernier message: 15/02/2008, 13h54
  3. [aide] Quel type de champs utiliser pour mettre un "+"
    Par lothar59 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 04/03/2007, 14h05
  4. [MySQL] quel type de champ pour un tableau serializé
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/11/2006, 14h37
  5. [SQL Server] Quel type de champ pour du commentaire
    Par brmartin dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/07/2006, 12h51

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