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 Oracle Discussion :

Insertion d'un date sous forme d'heure


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Par défaut Insertion d'un date sous forme d'heure
    bonjour je veux inseré une heure dans un tableau dans une colonne date
    mais je ne vois pas comment l introduire.

    INSERT INTO table1(ville, heure) values('bordeaux', 06:30)
    erreur: le mois n est pas valide.

    help me!!

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    une date est forcément au format date + heure. Tu as donc 2 possibilités :
    1°) un VARCHAR2 mais tu perds la possibilité d'utiliser les fonctions relatives aux date
    2°) tu mets une date bidon genre 01/01/1900

  3. #3
    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
    Ou bien tu peux laisser la colonne "heure" de type date, et à chaque insertion la date sera la date du jour si tu ne la renseignes pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create table table1 (ville varchar(10),heure date);
    insert into table1(ville,heure) values('bordeaux',to_date('06:30','HH24:MI'));
    select ville,to_char(heure,'MM/DD/YYYY HH24:MI:SS') from table1;
     
    VILLE      TO_CHAR(HEURE,'MM/DD/YYYYHH24:MI:SS') 
    ---------- ------------------------------------- 
    bordeaux   12/01/2007 06:30:00
    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/

  4. #4
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    Citation Envoyé par scheu Voir le message
    Ou bien tu peux laisser la colonne "heure" de type date, et à chaque insertion la date sera la date du jour si tu ne la renseignes pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create table table1 (ville varchar(10),heure date);
    insert into table1(ville,heure) values('bordeaux',to_date('06:30','HH24:MI'));
    select ville,to_char(heure,'MM/DD/YYYY HH24:MI:SS') from table1;
     
    VILLE      TO_CHAR(HEURE,'MM/DD/YYYYHH24:MI:SS') 
    ---------- ------------------------------------- 
    bordeaux   12/01/2007 06:30:00
    ça, c'est clairement pas ne bonne idée car il ne pourra plus comparer les heures....

    si la jour change, la comparaison des heures dans les dates n'a plus de sens...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Par défaut
    le but etant bien de comparée les heures mais il faut savoir que les heures sont des heures d'ouverture et fermeture de gare donc de tout les jours.
    merci quand meme scheu

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    c'est une question qui revient assez souvent, en effet, le type TIME n'est hélas pas supporté dans les tables oracle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SQL> select time '12:00:00' from dual;
    TIME'12:00:00'
    ----------------------------------------------------------
    12.00.00.000000000 PM
     
    SQL> create table t as select time '12:00:00' t from dual;
    create table t as select time '12:00:00' t from dual
    *
    ERROR at line 1:
    ORA-00902: invalid datatype
    Dans les possibilité, utiliser 1900-01-01 ou -4712-01-01 ou 2000-01-01 me parait tout à fait en ordre, mais j'ajouterais une contrainte pour être sûr de n'avoir aucune date significative

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SQL> create table t(x date 
      constraint x_is_a_time 
        check (x>=date '2000-01-01' and x<date '2000-01-02'));
     
    Table created.
     
    SQL> insert into t values (to_date('20000101-120000',
      'YYYYMMDD-HH24MISS'));
    1 row created.
     
    SQL> update t set x=x+interval '12' hour;
    update t set x=x+interval '12' hour
    *
    ERROR at line 1:
    ORA-02290: check constraint (SCOTT.X_IS_A_TIME) violated
    Dans les alternatives on peut employer des number secondes depuis minuit, voire des intervales DAY2SECOND depuis minuit. Les varchar2, c'est trop moche.

    Attention si tu as des gares qui ferment à 1h du mat'

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/08/2008, 21h13
  2. Problème de date sous forms 10 et base oracle 10
    Par ddazou dans le forum Forms
    Réponses: 4
    Dernier message: 26/03/2008, 17h13
  3. Réponses: 2
    Dernier message: 19/09/2007, 14h51
  4. [requête] récupérer la date sous forme de chiffre
    Par celiaaa dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 19/12/2006, 16h25
  5. Réponses: 5
    Dernier message: 08/03/2006, 15h22

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