我有一行
TO_DATE('{RUN_DATE_YYYY-MM-DD}', 'YYYY-MM-DD')-A.CHANGE_DATE_EDITED AS AGE_LAST_DATE,
由内部查询中的以下行提供支持
MAX(TO_DATE(TRUNC(TO_CHAR(CSSH.CHANGE_DATE, 'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD'),'YYYY-MM-DD')) as CHANGE_DATE_EDITED,
我一直磕磕绊绊
ORA 1722: Invalid number
每当我运行代码时,我都会多次修改代码而无济于事。任何帮助将不胜感激。
Addl info:
CSSH.CHANGE_DATE是时间戳列
{RUN_DATE_YYYY-MM-DD}
是日期输入参数
我正在使用Oracle 10g
答案 0 :(得分:2)
max(to_date(trunc(to_char
表达的意图是什么?您确定change_date
是timestamp
而不是名称所暗示的date
吗?
您通过timestamp
电话明确地将varchar2
投射到to_char
。然后您拨打trunc
,但如果您尝试截断date
,则传入的字符串不是有效参数。假设有意删除时间组件,您不想传递任何参数或传递DD
之类的内容。然后你在to_date
上拨打date
,这没有任何意义 - 如果有效,你必须隐含地将date
强制转换为{{1}为了呼叫varchar2
,希望能够回到你开始时的同一个to_date
。根据您的会话的NLS设置等内容,任何这些隐式转换都可能会导致错误。
我的猜测是你真的只想要
date
如果你真的想要消除时间组件(在这种情况下,首先想要将数据存储在max(cssh.change_date)
而不是timestamp
中是非常奇怪的),
date