Étant donné que cela semble plus d'une question de syntaxe, ma recherche n'a donné aucun résultat utile.Oracle TO_DATE ne conserve pas le format
Je tente d'effectuer une requête qui obtient des données européennes à partir d'une base de données américaine en utilisant l'heure GMT. J'ai besoin d'avoir l'heure européenne, mais je n'arrive pas à la faire fonctionner correctement.
permet de dire "myDateField" = '01 -01 à 2010'
SELECT TO_CHAR(myDateField + (60/1440), 'Mon" "DD", "YYYY')
produit exactement ce que je veux, mais je en ai besoin de rester comme une date.
Produit: '1 janvier 2010'
SELECT TO_DATE(TO_CHAR(myDateField + (60/1440)), 'Mon" "DD", "YYYY')
Mérites un "pas un mois valide" erreur.
Produit: Erreur
SELECT TO_DATE(TO_CHAR(myDateField + (60/1440), 'Mon" "DD", "YYYY'), 'Mon" "DD", "YYYY')
Works, mais la mise en forme est perdue.
Produit: « 01-01-2010 »
Comment puis-je formater ce que je puisse obtenir le résultat de la première déclaration donne, mais aussi garder comme une date? Ou y a-t-il une meilleure méthode?
EDIT:
Tout comme un exemple de cette requête particulière travaillant dans une situation différente ... Ceci est la même requête, mais au lieu de convertir en temps européenne, il se transforme en un autre fuseau horaire en Amérique du Nord.
SELECT TO_DATE(TO_CHAR(NEW_TIME(myDateField, 'GMT', 'MDT')), 'Mon" "DD", "YYYY')
Produit exactement ce que je veux, tout en conservant les données sous forme de date.
Produit: '1 janvier 2010'
En résumé:
Est-il possible de prendre "myDateField + (60/1440)", ou utiliser le "FROM_TZ" les mots-clés, et faire le résultat utiliser le format "Mon" "DD", "YYYY", tout en conservant son type Date?
commentaire sur votre « En résumé »: Non - c'est, votre client peut choisir un moyen de formatage des valeurs DATETIME, comme Dan a fait remarquer. Mais c'est juste la façon locale de l'outil pour représenter la date. Cela ne change pas la valeur réelle des données. L'utilisation de TO_CHAR change la valeur: elle sérialise la date en une chaîne au format spécifié. Vous pouvez réorganiser la chaîne et l'interpréter comme DATE, mais le résultat sera à nouveau une valeur de date sans mise en forme inhérente. Le format ne fait tout simplement pas partie du type de données ou des valeurs qu'il régit. –
Merci. Je suppose que je vis juste dans les nuages ... Juste pour une question rapide, pourquoi TO_DATE (myDateField + (60/1440), 'Mon "" DD "," YYYY') produisent un "mois non valide" " Erreur? (Vous semblez être très instructif sur le sujet) – Sivvy