Comment changer le format de date MM/JJ/aaaa jusqu'en AAAA-MM-JJ en PL/SQL?
J'ai une date de colonne dans une table stockée comme MM/DD/YYYY
format. J'ai de sélectionner et de stocker le même jour dans une autre table dans YYYY-MM-DD
format c'est à dire XSD Format de Date. Mais je ne suis pas en mesure de le faire. Je suis l'aide de cette requête:
select to_date(date_column,'YYYY-MM-DD') from table;
Mais encore, je ne suis pas en mesure de le faire. De me donner l'erreur
ORA-01843 : pas valide d'un mois
L'application de
Ok.. je vais l'effacer. Le jour que ce que je peux voir dans ma table, c'est comme par exemple 6/21/2006 et maintenant, je dois sélectionner cette date et le convertir en 2006-06-21. S'il vous plaît laissez-moi savoir comment le faire.
Exactement quel type de données n'est que la colonne?
il est de type DATE.
Si la colonne est vraiment un
to_date()
sur une colonne de date n'a pas de sens. La date de colonnes ne sont pas stockées avec un "format". Le format est appliqué par le client de l'application (par exemple, SQL*Plus) lors de l'affichage de la date.Ok.. je vais l'effacer. Le jour que ce que je peux voir dans ma table, c'est comme par exemple 6/21/2006 et maintenant, je dois sélectionner cette date et le convertir en 2006-06-21. S'il vous plaît laissez-moi savoir comment le faire.
Exactement quel type de données n'est que la colonne?
il est de type DATE.
Si la colonne est vraiment un
DATE
puis top_char()
est le chemin à parcourir, comme indiqué par Yahia. select to_char(date_column,'YYYY-MM-DD')
sera pas produire de l'erreur que vous nous montrent.OriginalL'auteur user972548 | 2011-09-30
Vous devez vous connecter pour publier un commentaire.
utilisation
ce n'est pas la même chose que vous avez essayé. Il est to_ char, pas to_date.
mais l'habitude de to_char changer le dataype à partir de la DATE de CHAR ?? J'ai besoin d'être dans le type de données de DATE.
une DATE réelle de la colonne n'a PAS de n'importe quel format! si vous voulez date dans un format spécifique, le résultat n'est plus un type DATE, il devient une chaîne... XML contient (en dehors de spécial binaire cas) exclusivement les chaînes... exactement ce que vous voulez atteindre ?
désolé, mais ce que vous décrivez est un paradoxe... n'importe quel format ("YYYY-MM-DD" ou "MM/JJ/AAAA" ou quoi que ce soit) est TOUJOURS une chaîne de caractères (c'est à dire VARCHAR2) ET TOUTE XML est une chaîne de caractères (rares dans les cas exceptionnels de côté)... type de données de DATE elle-même n'a PAS de FORMAT de! donc, ce que vous décrivez ne peut être vrai dans certaines régions, n'est pas complètement - à partir de votre description, il est impossible pour moi de comprendre le réel, les types de données donc je ne sais pas comment les aider 🙁
OriginalL'auteur Yahia
Il semble que vous avez le mauvais sens. Si votre existant les données sont en MM/JJ/AAAA, alors vous voulez:
afin de convertir les données à des valeurs de DATE. (Je me demande pourquoi ils ne sont pas stockés comme des dates, pour être honnête...)
Si vous souhaitez effectuer la conversion en une seule étape, vous pouvez:
En d'autres termes, pour chaque ligne, l'analyser en MM/JJ/AAAA, puis de le reformater en AAAA-MM-JJ.
(J'avais toujours penser en essayant de garder les données dans son "naturel" de type si, au lieu de les stocker sous forme de texte dans la première place.)
to_char
partie, le résultat de votre demande sera de sortie dépend de la NLS paramètres.il n'y a absolument pas besoin d'appliquer
to_date
sur une date colum.Cette colonne est le format de DATE ne reste c'est de montrer les erreurs. Et quand j'utilise la première requête de la vôtre, là encore, il montre la même erreur. (pas valable un mois.) J'ai pour sélectionner et envoyer cette date dans un format XML, donc j'ai besoin de la date dans XSD format de date.
J'avais cru lors de la lecture de la question que les valeurs sont stockées sous la forme MM/JJ/AAAA dans une colonne de type VARCHAR. - Je censé Jon Skeet également estimé que
La question n'est certainement pas clair. Étant donné que l'OP parle d'une "date de colonne dans une table stockée sous la forme MM/JJ/AAAA" je suis en supposant que c'est en fait, un champ de type varchar.
OriginalL'auteur Jon Skeet
Je suppose que vous pouvez utiliser Oracle SQL Developer, vous pouvez télécharger à partir de ici.
Vous pouvez définir le format de date que vous souhaitez travailler avec:
Avec cela, vous pouvez maintenant effectuer une requête comme ceci:
Si vous voulez être plus précis, vous pouvez définir le format de la date comme ceci:
OriginalL'auteur Jorge E. Hernández
Cela peut aider, mais, à la fin, vous obtiendrez une chaîne de caractères et non de la date. Apparemment,
le format de votre problème résolu pour vous .
OriginalL'auteur user9338150
Pour convertir un
DATE
colonne à un autre format, il suffit d'utiliserTO_CHAR()
avec le format souhaité, puis convertir unDATE
type:OriginalL'auteur Phate01
Cela a fonctionné pour moi! Vous pouvez convertir le type de données que vous voulez que ce soit une date ou chaîne
OriginalL'auteur Aravind Krishnakumar
Selon les commentaires, le type de données dans la table de données est à JOUR.
Donc, vous devez tout simplement utiliser:
"sélectionnez date_column de table;"
Maintenant, si vous exécutez la sélectionnez, vous obtiendrez une date de type de données, qui devrait être ce que vous avez besoin pour le .xsd.
Culture-dépendante de formatage de la date devrait être fait dans l'interface utilisateur graphique (la plupart des langues ont des moyens pratiques de le faire), pas dans le select-déclaration.
OriginalL'auteur Johannes
Fondamentalement , les Données dans une colonne de Date Oracle peut être stockée dans un format défini par l'utilisateur ou conservés en tant que par défaut.
Tout dépend de la NLS paramètre.
Format actuel peut être vu par : SELECT SYSDATE from DUAL;
Si vous essayez d'insérer un enregistrement et instruction insert n'est PAS dans CE format il donnera :
ORA-01843 : pas valide d'un mois à l'erreur.
Alors d'abord changer la base de données de format de date avant les états d'insertion ( je suis en supposant que vous avez de chargement en bloc d'instructions insert), puis d'exécuter insérer un script.
Format peut être modifié par :
ALTER SESSION SET nls_date_format = "mm/dd/yyyy hh24:mi:ss';
Aussi Vous pouvez Modifier les paramètres NLS de SQL Developer GUI , (Outils > préférences> base de données > NLS)
Ref: http://oracle.ittoolbox.com/groups/technical-functional/oracle-sql-l/how-to-view-current-date-format-1992815
OriginalL'auteur supernova
Pour les militaires de temps de mise en forme,
Si vous voulez que votre date d'arrondir à la BAISSE pour le Mois, Jour, Heure, Minute, vous pouvez essayer de
Pour les formats de littéraux, vous pouvez trouver de l'aide dans
https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions242.htm#SQLRF52037
OriginalL'auteur Jenna Leaf
utilisation
aussi gothrough
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html
Ohh..Elle est vraiment grosse erreur. Je ne sais pas comment j'ai manqué. désolé les gars.
OriginalL'auteur HiteshRawal
OriginalL'auteur ankush
si vous avez besoin de changer votre colonne de sortie format de date juste utiliser to_char
OriginalL'auteur yahia ahmed