我的查询接受以下格式的日期:
'2012年4月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:无效数字
如何实现这一目标?感谢
答案 0 :(得分:3)
SELECT EXTRACT(MONTH FROM date '2012-08-31') FROM dual;
答案 1 :(得分:2)
EXTRACT(MONTH FROM to_date('31 AUG 2012','DD MON YYYY'))
日期''运算符只接受ISO格式...
date '2012-08-31'
答案 2 :(得分: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(考虑今天的日期)
答案 3 :(得分: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;
答案 4 :(得分:-1)
select substr(to_date(sysdate,'dd-mon-yyyy'),4,3) from dual;