0

我有一个接受以下格式的日期的查询:

'2012 年 8 月 31 日'

我需要查询以将月份作为数字返回。对于上述日期,返回值为 08

我尝试了以下方法:

EXTRACT(MONTH FROM DATE '31 AUG 2012')
TO_DATE('31 AUG 2012', 'MM')
TO_CHAR('31 AUG 2012', 'MM')

所有这些分别给我以下错误:

ORA-01861:文字与格式字符串不匹配 ORA-01843:不是有效的月份 ORA-01722:无效的数字

如何实现?谢谢

4

5 回答 5

3
SELECT EXTRACT(MONTH FROM date '2012-08-31') FROM dual;
于 2013-03-26T13:21:43.830 回答
2
EXTRACT(MONTH FROM to_date('31 AUG 2012','DD MON YYYY'))

date '' 运算符只接受 ISO 格式...

date '2012-08-31'
于 2013-03-26T09:31:10.420 回答
0

您必须转换08为,8因为08是字符字段,所以我已经使用to_number()to_char,以便它返回确切的数字。

select to_number(to_char(to_date('31-AUG-2012','DD-MON-YYYY'),'MM')) from your_tbl;
于 2013-03-26T12:59:56.420 回答
0

实际上你犯的错误是你只给了'MM'作为格式掩码而不是你给'DD/MM/YYYY',希望它也能工作

SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS') FROM AB;

输出:26/03/2013 15:15:34

如果您只需要显示月份,请尝试使用:

SELECT EXTRACT(MONTH FROM SYSDATE) FROM AB;

以上将 MAR 显示为 3(考虑今天的日期)

于 2013-03-26T09:48:38.773 回答
-1
select substr(to_date(sysdate,'dd-mon-yyyy'),4,3) from dual;
于 2013-03-26T10:06:01.020 回答