J'ai trois tables qui suivent est la description de la table des tables J'ai pris des données dans chaque tables à l'aide de la syntaxe suivante: p> Lorsque j'essaie d'exécuter les requêtes suivantes p> i obtenir cette erreur à la ligne 3 p> J'utilise oracle 10g, quelqu'un peut-il me dire où je vais mal? P> p>
3 Réponses :
Vous allez mal ici
Merci pour vos efforts @nissimabehcera mais j'ai compris mon erreur et l'avez posté dans la section Réponse.
Vous pouvez également utiliser une fonction to_date d'Oracle pour modifier le format de date comme vous le souhaitez.
C'est mon erreur, lorsque j'entre "02/10/16" comme entrée, il est converti en format "02-OCT-16". Je connais à ce sujet à ce sujet en utilisant instruction. P> donc, p> fonctionne comme un charme . p> p>
Ne stockez pas vos dates comme texte i>.
J'ai utilisé to_date ('& achat_date', 'dd / mm / yy')); Ce format mais comment il a changé au format 01-Jan-15? Voulez-vous s'il vous plaît expliquer.
La colonne achète_date code> est i> comme date date code>, c'est correct (mais votre insert doit vraiment utiliser des années à 4 chiffres). Mais une date n'a pas de format réel, Oracle le stocke dans sa propre représentation. Lorsque vous interrogez-le, votre client forme ou il est par défaut de votre session NLS_Date_Format`. Par conséquent, si vous souhaitez voir un format spécifique, utilisez to_char () code>. Le problème que vous avez eu est que vous comparez la date avec une chaîne, qui fait également une conversion implicite. Vous devez le comparer à une autre date, pas une chaîne.
Comme vous avez réalisé que le problème est avec cette partie: mais votre correctif n'est pas tout à fait juste ... P> C'est mon erreur, lorsque j'entre "02/10/16" comme entrée, il est converti en format "02-OCT-16". P>
blockQquote> votre Le problème est que vous comparez cette date valeur à une chaîne. Oracle tente de dans votre réponse, vous le faites toujours: p> mais maintenant La chaîne correspond à votre modèle de format par défaut de sorte que la conversion implicite fonctionne maintenant, comme l'équivalent d'un Mais vous ne devriez pas compter sur des conversions implicites ou assumer quoi que ce soit sur les paramètres NLS. La même requête sera une erreur si elle est exécutée dans une session avec une langue différente (comme elle s'appuie sur
achète_date code> Colonne est une date code> comme il se doit, et une date n'a pas de format lisible à l'homme intrinsèque - Oracle le stocke avec sa propre représentation interne. Lorsque vous interrogez cela qui est converti en format lisible par votre application ou votre client, utilisez généralement le paramètre nls_date_format code> dans votre cas qui doit être DD-Mon-RR code> de la sortie que vous avez obtenue lorsque vous avez interrogé la table. Vous pouvez l'afficher dans n'importe quel format que vous souhaitez en appelant to_char () code>, mais devrait le laisser comme une date pour tous les traitements. P> explicite to_date ('01 -Jan-15 ', "DD-MON-RR") p > janvier code> étant une abréviation de mois d'anglais) ou un différent nls_date_format code>. Lorsque votre colonne est une date, vous devez expliquer explicitement la comparer avec une date également, à l'aide d'un modèle de format plus sûr (bien que cela permet toujours une ambiguïté entre les numéros de jour et de mois): P> C.PURCHASE_DATE >= DATE '2015-01-01'
Date littéraux sont écrits Comme ça .