68 votes

Oracle par défaut du format de la date est AAAA-MM-JJ, POURQUOI???

Oracle par défaut du format de la date est AAAA-MM-JJ. Ce qui signifie que si je fais:

 select some_date from some_table

...Je perds la partie heure de mon rendez-vous.

Oui, je sais que vous pouvez "fixer" cette avec:

 alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Mais sérieusement, pourquoi n'est-ce pas le au-dessus de la valeur par défaut? Surtout dans un SGBD où les deux principaux temps de suivi des types de données (DATE et heure) à la fois avoir un composant qui comprend (au moins) précision de 1 seconde.

86voto

skaffman Points 197885

Êtes-vous sûr que vous n'êtes pas confus base de données Oracle avec Oracle SQL Developer?

La base de données elle-même n'a pas de format de date, la date de sortie de la base de données sous forme brute. C'est le logiciel client de le rendre, et SQL Developer n' utilisez AAAA-MM-JJ comme format par défaut, qui est à côté de rien, je suis d'accord.

edit: Comme l'a expliqué ci-après, SQL Developer peuvent être reconfigurés pour afficher les valeurs de DATE correctement, il suffit de mauvais paramètres par défaut.

56voto

Dougman Points 4517

Si vous utilisez cette requête pour générer un fichier d'entrée pour votre Entrepôt de Données, alors vous devez formater les données de manière appropriée. Essentiellement, dans ce cas, vous êtes à la conversion de la date (qui a une composante temporelle) d'une chaîne. Vous devez explicitement le format de votre chaîne ou de modifier votre nls_date_format pour définir la valeur par défaut. Dans votre requête, vous pouvez simplement faire:

select to_char(some_date, 'yyyy-mm-dd hh24:mi:ss') my_date
  from some_table;

22voto

pavium Points 7845

Le format AAAA-MM-JJ est une partie de ISO8601 un standard pour l'échange de date (et heure) de l'information.

C'est très courageux de Oracle à adopter un ISO standard comme ça, mais en même temps, étrange qu'ils n'ont pas à aller tout le chemin.

En général, les gens résistent à quelque chose de différent, mais il y a beaucoup de bonnes International des raisons pour cela.

Je sais que je suis en train de dire révolutionnaire de choses, mais nous devrions tous adopter des normes ISO, de même il nous faire un peu à la fois.

13voto

James Anderson Points 18253

La plus grande PITA de l'Oracle est qu'elle ne fait pas un format de date par défaut!

Dans votre installation de Oracle la combinaison des paramètres régionaux et des options d'installation a choisi (le très sensible!) YYYY-MM-DD comme le format de sortie des dates. Une autre installation peut ont choisi "JJ/MM/AAAA" ou "AAAA/JJ/MM".

Si vous voulez que votre SQL pour portable à un autre Oracle site, je vous recommande toujours envelopper TO_CHAR(datecol,'YYYY-MM-DD') ou fonction similaire autour de chaque colonne de la date de votre SQL ou alternativly définir la defualt format immédiatement après vous vous connectez avec

ALTER SESSION 
SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';

ou similaire.

10voto

David Aldridge Points 27624

Il n'est jamais sage de s'appuyer sur les valeurs par défaut définie à une valeur particulière, à mon humble avis, si c'est pour les formats de date, monnaie formats, l'optimiseur de modes ou de quoi que ce soit. Vous devez toujours définir la valeur du format de la date que vous avez besoin, dans le serveur, le client, ou de l'application.

En particulier, ne jamais compter sur les valeurs par défaut lors de la conversion de date ou de types de données numériques à des fins d'affichage, parce qu'un seul changement de la base de données peut briser votre application. Toujours utiliser une conversion explicite format. Pendant des années, j'ai travaillé sur les systèmes Oracle où la sortie de la boîte par défaut format d'affichage de date est MM/JJ/RR, qui m'ont rendu fou mais au moins, m'a forcé à toujours utiliser une conversion explicite.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X