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

Oracle Discussion :

Colonne de type heure...


Sujet :

Oracle

  1. #1
    Membre du Club Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Points : 67
    Points
    67
    Par défaut Colonne de type heure...
    Bonjour,

    J'aimerais spécifier une colonne dans ma table de type horaire
    quelle est selon vous la meilleure solution?

    j'ai voulu mettre le type Date et dans ce cas lorsque j'insère l'heure
    il me met le premier jour du mois courant pour compléter la date

    je souhaiterais qu'il ne mette rien de + que ce que j'ai inséré par la requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    update ma_table t
    set t.heure_debut=TO_DATE('8:00:00','hh24:mi:ss')
    merci de votre aide

    PS: ma config Oracle 9.2

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Si tu ne veux pas de date, je ne vois pas d'autres solutions que de le stocker dans une colonne varchar2, mais là tu perds toutes les fonctionnalités de calcul.

    Par ailleurs une heure sans date n'a pas grande signification...

  3. #3
    Membre du Club Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Points : 67
    Points
    67
    Par défaut
    c'est bien la tout le probleme...

    qd à l'intéret c'est pour fixer des heures d'ouverture et de fermeture donc OUI ça peut avoir un sens

  4. #4
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Je te suggère de mettre un champ DATE avec le jour ET l'heure et un champ heure en number(4) pour stocker juste l'heure.

    Comme ça tu pourras faire ce que tu veux avec le champ en NUMBER(4) mais tu auras toujours l'heure et le jour en format DATE pour pouvoir effectuer des calculs, des comparaison, etc.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    ou que DATE mais en fixant DD/MM/YYYY à 01/01/1950 par exemple

  6. #6
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Dans ce cas, je stockerais dans un champ date avec une date bidon (toujours la même).
    => pas de problème pour les calculs
    => pour l'affichage il suffit de ne pas afficher la date mais seulement les heures

  7. #7
    Membre du Club Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Points : 67
    Points
    67
    Par défaut
    pourquoi pas mais pour tout t'avouer c'est vrai que ça me semble pas tres "propre". faute de mieux... je pense insérer l'heure en varchar2 et faire les comparaison de la façon suivante:

    to_date(une_date_quelconque ,'hh24:mi:ss')>to_date(ma_table.heure_debut ,'hh24:mi:ss')

    je suis une peu surpris je me disais qu'il y avait probablement quelque chose de déjà fait

    merci a vous de vous pencher sur le probleme !

  8. #8
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    En fait c'est beaucoup plus simple de gérer en VARCHAR2

    Tu crées une colonne VARCHAR2(8)
    Tu insères avec des to_char(sysdate, 'HH24:MI:SS')
    Tu compares directement les chaines de caractères
    '15:05:20' > '00:59:57'

  9. #9
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par McM
    En fait c'est beaucoup plus simple de gérer en VARCHAR2
    Sauf pour des calculs

  10. #10
    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
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par Fred_D
    ou que DATE mais en fixant DD/MM/YYYY à 01/01/1950 par exemple
    oui, ou 2000-01-01. 01-jan-2000 c'est la date par défaut que Oracle employe parfois, par exemple dans la clause model avec ignore nav.

  11. #11
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Pour les calculs tu repasses en date.
    Vu que les calculs sont faits par programmation ça change pas grand chose.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par magic charly
    pourquoi pas mais pour tout t'avouer c'est vrai que ça me semble pas tres "propre". faute de mieux... je pense insérer l'heure en varchar2 et faire les comparaison de la façon suivante:

    to_date(une_date_quelconque ,'hh24:mi:ss')>to_date(ma_table.heure_debut ,'hh24:mi:ss')

    je suis une peu surpris je me disais qu'il y avait probablement quelque chose de déjà fait

    merci a vous de vous pencher sur le probleme !
    super pour ne pas profiter des indexes ou faire des indexes de fonctions

  13. #13
    Membre du Club Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Points : 67
    Points
    67
    Par défaut
    il s'agit d'une table de correspondances de 400 lignes alors les index...
    je sais pas trop si cela sera utile


  14. #14
    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
    Points : 4 926
    Points
    4 926
    Par défaut

Discussions similaires

  1. [Débutant] DataGridView et Colonne de type Heure
    Par shaun_the_sheep dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/06/2012, 09h52
  2. Réponses: 5
    Dernier message: 19/04/2005, 09h46
  3. colonnes de type auto incremental
    Par Bill_Baroud dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/12/2004, 12h28
  4. Type heure
    Par Mystic eyes dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/06/2004, 14h36
  5. requete vers une colonne de type datetime
    Par Zorgz dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/12/2003, 12h37

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