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 :

Creation de table avec date du jour


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 13
    Points
    13
    Par défaut Creation de table avec date du jour
    Bonjour à tous,

    Je souhaiterais créer une table dont un champ s'appelle "datelocation" au format DATE avec la date du jour par défaut.
    Je n'arrive pas à trouver la bonne formule.

    Que faut-il utiliser Current_date ou now() ?


    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Créez une vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE VIEW V_DATE_DU_JOUR
    AS
       SELECT NOW() AS JOUR
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    datelocation date default now();
    ...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Bonjour et merci pour vos réponses mais j'ai un autre problème.

    Pour être plus précis, voilà les deux tables que je souhaite créer.
    La première se crée normalement.
    Pour la deuxième je souhaiterais, que la valeur par défaut pour le champ dateretour, soit datelocation ou date du jour + 15 jours.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE date (
            datelocation DATE DEFAULT NOW()
    );
     
    CREATE TABLE location (
    	datelocation DATE REFERENCES DATE(datelocation),
    	dateretour DATE default(datelocation+15),
    	prix FLOAT check (prix IN(2, 10, 20))
    );

    Voilà le message que j'obtiens:
    ERROR: cannot use column references in default expression
    État SQL :42P10
    Je ne sais pas comment faire.

    Merci d'avance.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Comme dit le message d'erreur, il n'est pas possible d'utiliser la valeur d'une colonne pour calculer la valeur par défaut d'une autre colonne.
    Il faudra calculer cette valeur au moment de faire l'insertion dans la table.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    C'est un exercice que j'ai du faire pendant un examen. Voilà la correction de l'examen pour le champ "Dateretour" (cours suivi avec Postgres):

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    dateretour DATE DEFAULT (SYSDATE+15)

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    dateretour DATE DEFAULT (SYSDATE+15)
    C'est la réponse à quelle question?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Dans le cadre d'un exercice sur une base de données permettant de gérer des locations de CD, je devais créer une requête pour créer plusieurs tables dont la table "location".

    Une des contraintes était d'avoir, par défaut, une date de retour de location égale à la date de location + 15 jours.

    La date de location étant par défaut la date du jour.

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Mais sysdate+15 c'est valide pour Oracle, pas pour Postgresql. Avec Postgresql, ce serait plutôt une expression du genre: now()+'15 days'::interval

  10. #10
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    J'ai trouvé !!

    Voilà la ligne qui va bien dans la requête:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    dateretour DATE DEFAULT (current_date + INTEGER '15')

    Merci beaucoup pour votre aide.

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

Discussions similaires

  1. [Requête] creation de table avec un champ auto incrementé
    Par lucke_34 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 30/04/2020, 23h18
  2. [MySQL] requete avec date du jour - 30
    Par le69 dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 31/01/2013, 15h38
  3. Creation de table avec un champ texte comme clé primaire
    Par Sytchev3 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/07/2007, 11h40
  4. Requête 2 tables avec dates
    Par Flam dans le forum Requêtes
    Réponses: 11
    Dernier message: 22/06/2006, 09h42
  5. Newbie PgSQL->Probleme Creation de table avec FOREIGN KEY
    Par ralkif dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 07/03/2006, 21h59

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