2017-05-03 129 views
0

我有一个varchar字段出现为:MON-YYYY。从月份名称获取月份编号

我需要从字段中提取月份编号。 例如:APR 2017

预期输出:04

当然,因为我们只有12,我可以做一个串并案件,而是试图做一次性使用如下:

to_char(to_date(Period,'MON YYYY'),'MM') as Month 

会一直出现错误-numeric在预期非数字的地方发现等。

这里有什么问题?是否还有其他更简单的方法可以从2017年4月开始获得“04”

+0

你正在做这个正确的。将字符串转换为日期,然后运行to_char以获取月份的数字值。你错误来自其他的东西。你能提供这个代码和你收到的实际错误吗? – unleashed

+0

我怀疑你的列中的字符串值不是你期望的格式。 –

回答

0

检查你的Oracle语言,这似乎是另一种。

因为IM使用此代码尝试:

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

,我也得到:

Result

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

1

EXTRACT功能如何?

http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions050.htm

EXTRACT(MONTH FROM to_date(Period,'MON YYYY'),'MM') as Month 
+0

我得到一个'缺少右括号'对此。我认为当你从问题转换它的时候,你保留了to_char和to_char格式的paren。 – unleashed

+0

你是对的,我的错误,留在你的文章的括号中。 –

+0

你已经留在','MM'部分了...... –