在以下代码中,SDate ='10-04-2020'
格式为 DD-MM-YYYY,我只需要将月份和年份与给定的 MON-YYYY 日期进行比较
SELECT WR.EmpID AS EMPSID, SUM(WR.ESALARY) AS TOTAL_SALARY
FROM WEEKLY_REPORT WR
WHERE WR.EmpID = 'E009' AND TO_CHAR(WR.SDate,'MON-YYYY') = TO_CHAR('APR-2020','MON-YYYY')
GROUP BY WR.EmpID;
错误
ORA-01722: invalid number
答案 0 :(得分:1)
由于您的日期采用 dd-mm-yyyy 格式,因此您需要在使用 to_char() 之前使用 to_date(WR.SDate,'dd-mm-yyyy')
。而不是 TO_CHAR('APR-2020','MON-YYYY')
使用'APR-2020',这是一个有效的字符串。
SELECT WR.EmpID AS EMPSID, SUM(WR.ESALARY) AS TOTAL_SALARY
FROM WEEKLY_REPORT WR
WHERE WR.EmpID = 'E009' AND TO_CHAR(to_date(WR.SDate,'dd-mm-yyyy'),'MON-YYYY') = 'APR-2020'
GROUP BY WR.EmpID;
DB-小提琴:
将日期转换为 mon-yyyy 的查询:
select TO_CHAR(to_date('10-04-2020','dd-mm-yyyy'),'MON-YYYY') result from dual
输出:
结果 |
---|
APR-2020 |
查询条件:
select 'true' result from dual
where TO_CHAR(to_date('10-04-2020','dd-mm-yyyy'),'MON-YYYY') = 'APR-2020'
输出:
结果 |
---|
true |
db<>fiddle here
答案 1 :(得分:1)
SDate
是约会对象吗?如果是这样,则它没有格式。将字符串传递给 to_char
是没有意义的。 'APR-2020' 已经是一个字符串。
将字符串与字符串进行比较
TO_CHAR(WR.SDate,'MON-YYYY') = 'APR-2020'
或将日期与日期进行比较
trunc( wr.SDate, 'MM' ) = date '2020-04-01'