“无效数字”错误

时间:2014-02-21 04:44:13

标签: sql oracle date oracle10g

执行时:

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)

5 个答案:

答案 0 :(得分:2)

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

相反,您希望使用字符串函数,但这取决于格式。类似的东西:

where HIREDATE like '%13'

答案 1 :(得分:2)

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

答案 2 :(得分:1)

如果您想坚持Date Data Type,则必须将HIREDATE列从Date转换为VARCHAR2。所以你可以尝试这个解决方案。

假设您将HIREDATE中的数据设为28-02-2013,则查询将为:

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

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

选择* 来自emp 其中to_char(to_date(hiredate,'DD / MM / YYYY'),'yy')='13';