Comment formater une Date variable en PLSQL
Je suis nouveau sur le PL/SQL et ont à cette question.
J'ai créé une procédure, avec les spécifications suivantes:
PROCEDURE runschedule (i_RunDate IN DATE)
ce i_RunDate
est livré dans un format spécifique, et j'ai besoin de le changer à ce format:
'MM/dd/yyyy hh:mi:ss PM'
Je ne pouvais pas trouver comment faire pour re-formater une Date variable.
Vous pouvez prendre un coup d'oeil à DBMS_Scheduler paquet et l'Oracle des concepts de guide. Les gens dépensent beaucoup d'argent sur Oracle pour éviter de coder leur propre calendrier d'exécution des procédures.
OriginalL'auteur Yoni | 2011-09-22
Vous devez vous connecter pour publier un commentaire.
La DATE n'a pas spécifiquement format, une DATE est une DATE. Lorsqu'elles sont stockées dans la base de données de la colonne, les valeurs de date en compte les temps de la journée en secondes depuis minuit, et une variable de DATE a la même chose, seulement que lorsque le point de vous montrer la variable est formaté. PL/SQL peut convertir le type de données d'une valeur implicitement, par exemple, il peut convertir la valeur CHAR '02-JUN-92' à une valeur de DATE.. mais je ne vous recommande pas de s'appuyer sur l'implicite conversiosn. J'ai toujours utiliser la conversion explicite.
Pour en savoir plus sur ce sujet, vous pouvez lire ceci:
http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/datatypes.htm#i9118
Dans votre cas, si vous voulez formater votre DATE de journaux de quelque chose, ou à afficher dans votre INTERFACE utilisateur ou quel que dans un format différent, vous devez assig à une variable varchar que Justin a dit, quelque chose comme ceci:
Votre createschedule procédure, dans ce cas, aura un varchar2 paramètre...
OriginalL'auteur Aitor
Vous devez utiliser le
TO_CHAR
fonction. Voici un exemple:Pouvez-vous mettre un peu de code pour me montrer comment vous l'utilisez? Normalement, le seul moment où vous avez besoin de formater un type de date est lors de la sortie comme une chaîne de caractères, donc je suis un peu confus quant à ce que vous faites exactement.
De CRÉER OU de REMPLACER le CORPS de PACKAGE pkgtmschedule COMME PROCÉDURE runschedule (i_RunDate EN DATE par défaut sysdate) EST v_generated_run_date DATE; BEGIN -- générer sysdate si nécessaire si (i_RunDate est null), PUIS SÉLECTIONNEZ sysdate EN v_generated_run_date DE double; d'AUTRE v_generated_run_date := i_RunDate; FIN SI; pkgschedule.createschedule (v_generated_run_date); commit; END runschedule; FIN pkgtmschedule; /
en référence à son code ci-dessus: - je recevoir la i_RunDate comme une Date, mais j'ai besoin de le re-formater en "MM/JJ/AAAA HH12:MI:SS AM' , mais puisque c'est une Date , je ne sais pas comment faire pour re-formater. un autre point est quand on regarde dans le nls_session_parameters , je vois que NLS_DATE_FORMAT = DD-MON-RR
Quelle est la définition de la procédure pour createschedule()? En d'autres termes, quel est le type d'argument que vous êtes censé passer?
OriginalL'auteur Justin Valentini