执行时:
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
列转换为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
(如果您不想按照@Gordon Linoff
之前的建议使用`where HIREDATE like '%13'
)。
HIREDATE 是VARCHAR2,而 to_char(xxx, 'yy') 需要日期或时间戳数据类型
选择 *从 EMP其中to_char(to_date(雇用日期,'日/月/年') ,'yy')='13';