Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2007, 01h26   #1
Invité de passage
 
Inscription : décembre 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 4
Points : 1
Points : 1
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!!
supbattosai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 09h08   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
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
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 09h14   #3
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
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 :
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
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 09h46   #4
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
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 :
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...
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 10h27   #5
Invité de passage
 
Inscription : décembre 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 4
Points : 1
Points : 1
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
supbattosai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 13h15   #6
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

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

Code :
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 :
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'
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h11.


 
 
 
 
Partenaires

Hébergement Web