在下面的硬编码查询中,我有两个varchar2参数和两个日期参数。
select * from myTable
where title = 'abc'
and start_date = TO_DATE('04/05/2016', 'mm/dd/yyyy')
and end_date = TO_DATE('04/06/2016', 'mm/dd/yyyy')
and description = 't';
此查询返回两行。
当我使用Toad查询参数值输入窗口
运行相同的查询时select * from myTable
where title = :ttitle
and start_date = :startdate
and end_date = :enddate
and description = :descrip;
我输入abc作为ttitle param,2016/04/05为startdate,2016/04/06为enddate,t为描述。然后我收到日期参数的以下错误
ORA-01861:literal与格式字符串
不匹配我已经尝试了其他日期' 04/05 / 2016'我尝试了整个过去的时间(' 04/05 / 2016' ....),.. 。和其他格式,但不断收到错误。注意:如果我注释掉日期参数并且只使用varchar2参数,则当我输入abc和t时查询运行。我的问题是日期参数。在Toad的参数窗口中输入日期值的正确方法是什么?
答案 0 :(得分:0)
尝试使用'DD-MON-YYYY'
作为日期格式,即'08-APR-2016'
。我认为它需要匹配会话中设置的NLS_DATE_FORMAT:
要查看您的NLS_DATE_FORMAT:
SELECT value
FROM nls_session_parameters
WHERE parameter = 'NLS_DATE_FORMAT'
您还可以更改会话的日期格式,这样输入的日期将被视为日期,不需要TO_DATE。
ALTER SESSION SET nls_date_format = 'dd/mm/yyyy'