Sql Oracle:将DD-MM-YYYY转换为MON-YYYY

Sql Oracle:将DD-MM-YYYY转换为MON-YYYY,sql,database,oracle,Sql,Database,Oracle,在以下代码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') GROU

在以下代码
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:无效数字

因为您的日期是dd-mm-yyyy格式,所以在使用to-char()之前,您需要使用
to-date(WR.SDate,'dd-mm-yyyy')
。使用有效字符串“APR-2020”,而不是
TO_CHAR('APR-2020','MON-YYYY')

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
输出:

结果 2020年4月
因为您的日期是dd-mm-yyyy格式,所以在使用to-char()之前,您需要使用
to-date(WR.SDate,'dd-mm-yyyy')
。使用有效字符串“APR-2020”,而不是
TO_CHAR('APR-2020','MON-YYYY')

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
输出:

结果 2020年4月
SDate
是日期吗?如果是,则没有格式。将字符串传递到
到\u char
是没有意义的“2020年4月”已经是一个字符串

或者将字符串与字符串进行比较

TO_CHAR(WR.SDate,'MON-YYYY') = 'APR-2020'
或者将一个日期与另一个日期进行比较

trunc( wr.SDate, 'MM' ) = date '2020-04-01'

SDate
是日期吗?如果是,则没有格式。将字符串传递到
到\u char
是没有意义的“2020年4月”已经是一个字符串

或者将字符串与字符串进行比较

TO_CHAR(WR.SDate,'MON-YYYY') = 'APR-2020'
或者将一个日期与另一个日期进行比较

trunc( wr.SDate, 'MM' ) = date '2020-04-01'

SDate
的数据类型是什么?假设它是日期,您不应该在任何地方使用
to_char()
to_date
和格式化模型。相反,您应该在
where
子句中将
SDate
与固定日期(
=date'2020-04-01'
)进行比较。
SDate
的数据类型是什么?假设它是日期,您不应该在任何地方使用
to_char()
to_date
和格式化模型。相反,您应该在
where
子句中将
SDate
与固定日期(
=date'2020-04-01'
)进行比较。