如何使用查询参数窗口在Toad中为Oracle查询指定日期值参数?

时间:2016-04-08 14:48:26

标签: oracle11g toad

在下面的硬编码查询中,我有两个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的参数窗口中输入日期值的正确方法是什么?

1 个答案:

答案 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'