Sql 如何在带有日期列的where子句中使用相等运算符?

Sql 如何在带有日期列的where子句中使用相等运算符?,sql,oracle,Sql,Oracle,我正在使用以下查询从数据库检索数据,但我得到以下结果: ORA-01858:在需要数字的位置找到非数字字符 这是我的问题 Select * from employees where req_date =TO_DATE('05-18-2014','MM-dd-yyyy'); 谁能告诉我如何解决这个错误 您可以将日期转换为Varchar,然后使用,如下所示 Select * from employees where Convert(Varchar,req_date,112)='20140518'

我正在使用以下查询从数据库检索数据,但我得到以下结果: ORA-01858:在需要数字的位置找到非数字字符

这是我的问题

Select * from employees where req_date =TO_DATE('05-18-2014','MM-dd-yyyy');

谁能告诉我如何解决这个错误

您可以将
日期
转换为
Varchar
,然后使用,如下所示

Select * from employees where Convert(Varchar,req_date,112)='20140518'

以上查询可能会帮助您

请求日期是什么类型的列?如果是日期列,您应该使用
TO_date
instat of
TO_CHAR
请求日期的类型为date。@Zaheer:TO_date('18-05-2014','dd-MM-yyyy')与您查询的TO_date('05-18-2014','MM-dd-yyyyy')完全相同。您是否绝对确定请求日期是日期列?您可以通过以下方式进行验证:
从用户选项卡的列中选择数据类型,其中上部(表名称)=“员工”和上部(列名称)=“请求日期”@kitezz:为什么这是必要的。nls_date_格式在将日期与日期进行比较时不起作用。Oracle convert函数将数据从一个字符集转换为另一个字符集。它与日期转换无关。-1表示转换函数的语法错误。更改字符集而不是数据类型