【问题标题】:How to use equal operator in where clause with date column?如何在带有日期列的where子句中使用相等运算符?
【发布时间】:2014-05-22 15:16:51
【问题描述】:

我正在使用以下查询从数据库中检索数据,但我得到了这个抛出: ORA-01858: 在需要数字的地方发现了一个非数字字符

这是我的查询

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

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

【问题讨论】:

  • req_date是什么类型的列?如果是日期列,则应使用 TO_DATE instat of TO_CHAR
  • req_date 的类型是日期。
  • @Zaheer: TO_DATE('18-05-2014','dd-MM-yyyy') 与 TO_DATE('05-18-2014','MM-dd- yyyy')
  • 您的查询看起来完全正常。您确定 req_date 是 DATE 列吗?您可以通过以下方式验证这一点:select data_type from user_tab_columns where upper(table_name)='EMPLOYEES' and upper(column_name)='REQ_DATE';
  • @Kitezzz:为什么有必要这样做。在比较日期和日期时,nls_date_format 不起作用。

标签: sql oracle


【解决方案1】:

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

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

以上查询可能对您有所帮助....

【讨论】:

  • Oracle 转换函数将数据从一个字符集转换为另一个字符集。它与日期转换无关。
  • -1 表示 CONVERT 函数的语法错误。 CONVERT 更改字符集而不是数据类型
猜你喜欢
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-24
相关资源
最近更新 更多