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'
和
)进行比较。