Sql 从月份名称获取月份编号

Sql 从月份名称获取月份编号,sql,oracle,Sql,Oracle,我有一个varchar字段显示为:MON-YYYY 我需要从字段中提取月份号。 例:2017年4月 预期产出:4 当然,因为我们只有12个,我可以做一个子字符串和大小写,但尝试使用以下命令一次性完成: to_char(to_date(Period,'MON YYYY'),'MM') as Month 不断遇到错误-在需要非数字的地方找到数字等 这里怎么了?从2017年4月起,是否有其他更简单的方法获得04?提取功能如何 检查您的oracle语言,它似乎是另一种语言 因为我正在尝试使用以

我有一个varchar字段显示为:MON-YYYY

我需要从字段中提取月份号。 例:2017年4月

预期产出:4

当然,因为我们只有12个,我可以做一个子字符串和大小写,但尝试使用以下命令一次性完成:

    to_char(to_date(Period,'MON YYYY'),'MM') as Month
不断遇到错误-在需要非数字的地方找到数字等


这里怎么了?从2017年4月起,是否有其他更简单的方法获得04?提取功能如何


检查您的oracle语言,它似乎是另一种语言

因为我正在尝试使用以下代码:

select to_char(to_date('ABR 1990','MONTH yyyy'), 'mm') as MONTH from dual;
我得到:


注意:我的母语是西班牙语。

您这样做是正确的。将字符串转换为日期,然后运行到_char以获取月份的数值。你的错误来自其他方面。你能提供这方面的代码和你收到的实际错误吗?我怀疑你的列中的字符串值不是你所期望的格式。我得到了一个“缺少右括号”。我想当你把问题转换成to_char和to_char格式时,你保留了to_char和to_char格式。你是对的,我的错误,在你文章的括号里。
select to_char(to_date('ABR 1990','MONTH yyyy'), 'mm') as MONTH from dual;