我使用oracle表单11g。我传递了插入数据库的To_Date(sysdate,'dd-mm-yyyy')
,列的数据类型为date
。但它插入22-10-0015而不是22-10-2015你能帮帮我吗?
我使用过程从按钮click.i中插入数据和oracle需要将dd-mm-yyyy格式插入到数据库中如何做到这一点?
答案 0 :(得分:2)
sysdate
已经是一个日期,因此为to_date()
致电是没有意义的。您隐式将其转换为字符串,然后显式返回日期。隐含的步骤是使用您的Forms会话的NLS_DATE_FORMAT,这可能是症状中的DD-MM-YY,所以您真的在做:
to_date(to_char(sysdate,'dd-mm-yy'),'dd-mm-yyyy')
隐式字符串版本会将年份显示为15,如果您自己运行它;并且显式转换正确地将其视为0015而不是假设2015年。
你应该直接通过sysdate
;但是如果你试图去除时间以显示午夜,你可以使用the trunc()
function:
trunc(sysdate)
答案 1 :(得分:0)
SYSDATE已经是DATE了。您无需使用TO_DATE将其转换为DATE。
正在发生的事情是你将SYSDATE转换为一个字符串而你正在使用YYYY掩码,它将把2000年的任何一年翻译成00年代(这就是2015年被转换为15年的原因)。如果您使用RRRR掩码,您将获得预期结果:
apply
但是,这不是一个好主意,因为它是不必要的,如果用于隐式转换为字符串的NLS_DATE_FORMAT模型不匹配,则可能会失败。