Equivalent smalldatetime sous oracle
Fermé
Ghislain22
Messages postés
13
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
6 janvier 2010
-
23 nov. 2009 à 18:14
fiu - 26 nov. 2009 à 00:12
fiu - 26 nov. 2009 à 00:12
A voir également:
- Equivalent smalldatetime sous oracle
- Equivalent coco - Accueil - Réseaux sociaux
- Equivalent wawacity - Accueil - Outils
- Équivalent coco - Accueil - Réseaux sociaux
- Equivalent word gratuit - Guide
- Datediff oracle ✓ - Forum Oracle
2 réponses
Hello
il n'y a qu'un type DATE qui sert à tout. pour le reste, ce n'est qu'une histoire d'affichage to_char(<date>, <format>)
=> select to_char(sysdate, 'dd mmm yyyy') from dual;
=> select to_char(sysdate, 'hh24:mi:ss') from dual;
il n'y a qu'un type DATE qui sert à tout. pour le reste, ce n'est qu'une histoire d'affichage to_char(<date>, <format>)
=> select to_char(sysdate, 'dd mmm yyyy') from dual;
=> select to_char(sysdate, 'hh24:mi:ss') from dual;
Salut
Les horodatages sont convertis en chaîne (et vice-versa) grâce à un modèle : NLS_DATE_FORMAT.
Lors de ton insert, le format utilisé pour la conversion est précisé dans la fonction to_char().
Mais pour l'affichage, quel format utilises-tu ?
1. Vérifie que l'heure est bien là en faisant
select to_char(datexxx, 'DD-MM-YYYY HH24:MI:SS')
from reparation
where id1=1 and id2=200; -- je te laisse remplacer id1, id2 et datexxx par les bons noms
Ça devrait afficher 01-09-2009 09:18:25
2. modifie le modèle de conversion d'horodatage de ta session avec la commande
alter session set nls_date_format = 'dd-mm-yyyy hh24:mi:ss';
et affiche l'heure enregistrée avec
select datexxx from reparation where id1=1 and id2=200;
tu peux aussi donner une requête spécifiant un horodatage et laisser Oracle le convertir avec le modèle en cours:
select id1, id2 from reparation where datexxx='01-09-2009 09:18:25';
=> Oracle convertit ta chaine en horodatage car la conversion fonctionne dans les deux sens avec le NLS_DATE_FORMAT défini.
à la longue, je suis devenu économe sur la ponctuation (l'alter session est à faire à chaque début de session), aussi c'est devenu
alter session set nls_date_format='yyyymmdd.hh24miss';
le select t'aurait alors affiché 20090901.091825
À l'intérieur de la base, c'est la même chose : les éventuelles conversions implicites chaîne / horodatage sont faites avec le modèle en cours pour la session ; si l'on est pas sûr du modèle, mieux vaut, pour éviter les exceptions en rafale, spécifier le modèle de conversion dans to_date() ou to_char().
Les horodatages sont convertis en chaîne (et vice-versa) grâce à un modèle : NLS_DATE_FORMAT.
Lors de ton insert, le format utilisé pour la conversion est précisé dans la fonction to_char().
Mais pour l'affichage, quel format utilises-tu ?
1. Vérifie que l'heure est bien là en faisant
select to_char(datexxx, 'DD-MM-YYYY HH24:MI:SS')
from reparation
where id1=1 and id2=200; -- je te laisse remplacer id1, id2 et datexxx par les bons noms
Ça devrait afficher 01-09-2009 09:18:25
2. modifie le modèle de conversion d'horodatage de ta session avec la commande
alter session set nls_date_format = 'dd-mm-yyyy hh24:mi:ss';
et affiche l'heure enregistrée avec
select datexxx from reparation where id1=1 and id2=200;
tu peux aussi donner une requête spécifiant un horodatage et laisser Oracle le convertir avec le modèle en cours:
select id1, id2 from reparation where datexxx='01-09-2009 09:18:25';
=> Oracle convertit ta chaine en horodatage car la conversion fonctionne dans les deux sens avec le NLS_DATE_FORMAT défini.
à la longue, je suis devenu économe sur la ponctuation (l'alter session est à faire à chaque début de session), aussi c'est devenu
alter session set nls_date_format='yyyymmdd.hh24miss';
le select t'aurait alors affiché 20090901.091825
À l'intérieur de la base, c'est la même chose : les éventuelles conversions implicites chaîne / horodatage sont faites avec le modèle en cours pour la session ; si l'on est pas sûr du modèle, mieux vaut, pour éviter les exceptions en rafale, spécifier le modèle de conversion dans to_date() ou to_char().
24 nov. 2009 à 09:58
le probleme est que quand je mets le format date puis que j'insere
INSERT INTO REPARATION
VALUES ( 001, 200, TO_DATE('01-09-2009 9:18:25','DD-MM-YYYY HH24:MI:SS'));
il m'affiche 01/09/2009 et pas l'heure
Et quand je mets le format timestamp et que j'insere la meme chose il m'affiche 01/09/2009 9:18:25,00000 et je ne veux pas autant de précision( '00000')
Merci d'avance