【发布时间】:2014-11-23 01:58:39
【问题描述】:
我使用fnd_date.canonical_to_date 将列转换为日期数据类型。
the expected output is for example:29-JAN-2014
but i am getting : 29-JAN-0014
有人知道为什么吗?
l_actual_term_date varchar2(100);
SELECT to_char(ACTUAL,'DD-MON-RRRR')
INTO l_actual_term_date
FROM per_table;
--assign to another variable as per reqmt of date type
prev_term_date :=l_actual_term_date;
--WHEN printed this will give 29-JAN-12
--then in another package have to aasign prev_term_date to a varchar type variable
P_prev_term_date :=fnd_date.canonical_to_date(prev_term_date);
--when i print this P_prev_term_date i get - 29-JAN-0014 instead of 29-JAN-2014
【问题讨论】:
-
你能展示你如何使用
canonical_to_date吗?以及相关数据,以便我们尝试重现您的问题。 -
@SylvainLeroux 完成-请检查并告诉
-
代码似乎没有任何问题。您可以尝试将 'RRRR' 更改为 'YYYY' 看看是否会有所不同,但这可能是从表中选择的 'ACTUAL' 值的问题。
-
好问题。我遇到了类似的问题,+1
-
在类型转换问题中,包含所涉及的列、变量和参数的确切类型以及会话的相关 NLS 设置会很有帮助。
l_actual_term_date是一个字符串,但prev_term_date和p_prev_term_date是什么?我从未听说过fnd_date.canonical_to_date,但它似乎被记录为here 接受一个“以规范日期格式”的字符串(尽管我看不到那是什么 - 也许是一些全局设置?)并返回一个日期.
标签: oracle plsql oracle-sqldeveloper toad