Equivalent smalldatetime sous oracle
Bonjour,
Je cherche l'équivalent de smalldatetime sous oracle!
Car pour l'instant j'utilise le format timestamp mais je ne veux pas une précision aussi importante( cent millieme de secondes!!) ex :01/09/09 08:16:02,00000 (sous timestamp) et moi je voudrais 01/09/09 08:16:02
Merci d'avance
Je cherche l'équivalent de smalldatetime sous oracle!
Car pour l'instant j'utilise le format timestamp mais je ne veux pas une précision aussi importante( cent millieme de secondes!!) ex :01/09/09 08:16:02,00000 (sous timestamp) et moi je voudrais 01/09/09 08:16:02
Merci d'avance
Configuration: Windows XP Internet Explorer 7.0
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;-
Bonjour,
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
-
-
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().