"invalid number"错误



执行时:

select * 
from emp 
where to_char(hiredate ,'yy')='13';   

这个查询位于 oracle10g 中,给出一个错误,即指向 hiredate 的"无效数字"。

我的表描述是:

NO         NUMBER(10)
NAME       VARCHAR2(15)
JOB        VARCHAR2(10)
COMPANY    VARCHAR2(15)
SALARY     NUMBER(10)
DEPTNO     NUMBER(5)
HIREDATE   VARCHAR2(15)

HIREDATE已经是字符串,而不是日期。 您不想在其上使用to_char()

相反,您希望使用字符串函数,但这取决于格式。 像这样:

where HIREDATE like '%13'
您可能

希望将HIREDATE更改为键入DATE并使用SQL语句,它应该可以正常工作。这样,您就可以将HIREDATE用于需要DATE数据类型的其他目的。

如果你想坚持使用Date Data Type你必须将你的HIREDATE列转换为DateVARCHAR2。因此,您可以尝试此解决方案。

假设您的数据HIREDATE28-02-2013,查询将是:

SELECT * FROM emp WHERE To_CHAR(TO_DATE(HIREDATE,'dd-MM-YY'),'YY')='13';

'dd-MM-YY'取决于您HIREDATE数据,

因此,在这里,您必须首先使用To_DATE函数来转换列,然后再从中提取Year(如果您不想按照@Gordon Linoff之前的建议使用`where HIREDATE like '%13')。

HIREDATE 是VARCHAR2,而 to_char(xxx, 'yy') 需要日期或时间戳数据类型

选择 *从 EMP其中to_char(to_date(雇用日期,'日/月/年') ,'yy')='13';

相关内容

最新更新