J'ai une date et je voudrais imprimer le décalage de cette date. Je peux le faire:PL/SQL et les intervalles de date
dbms_output.put_line(to_char(g_startDate - interval '4' month ,'YYYY-MM-DD'));
et cela fonctionne très bien. Le problème est que l'intervalle est variable. Lorsque j'essaie ceci:
dbms_output.put_line(to_char(g_startDate - interval g_dateOffsetAmt month ,'YYYY-MM-DD'));
Je reçois une erreur de compilation.
je pensais que ce serait peut-être parce que g_dateOffsetAmt
est un integer
donc j'ai essayé ceci:
dbms_output.put_line(to_char(g_startDate - interval to_char(g_dateOffsetAmt) month ,'YYYY-MM-DD'));
Bien que je reçois encore des erreurs du compilateur en disant:
Error: PLS-00103: Encountered the symbol "TO_CHAR" when expecting one of the following: .) , * @ & | = - + at in is mod remainder not rem => .. or != or ~= >= and or like LIKE2_ LIKE4_ LIKEC_ as between from using || member SUBMULTISET_ The symbol "," was substituted for "TO_CHAR" to continue. Line: 704 Error: PLS-00103: Encountered the symbol "MONTH" when expecting one of the following: . () , * % & | = - + at in is mod remainder not range rem => .. or != or ~= >= and or like LIKE2_ LIKE4_ LIKEC_ between || multiset member SUBMULTISET_ The symbol "." was substituted for "MONTH" to continue. Line: 704
Y at-il une autre façon de le faire?
Yup, 'add_months' fait exactement ce que je veux. Et pour penser que je l'ai déjà utilisé et que je l'ai oublié :(J'ai besoin du week-end pour l'homme! – FrustratedWithFormsDesigner
Et l'utilisation de mois supplémentaires contourne le problème ennuyeux d'ORA-01839 quand on utilise l'arithmétique d'intervalle à la fin d'un mois, par exemple ' date '2010-03-30' - interval '1' month' Mais add_months a aussi ses propres problèmes à la fin du mois, si vous comparez 'add_months (date' 2010-02-27 ', 1) 'et 'add_months (date '2010-02-28', 1)' –