【问题标题】:Get month number from month name从月份名称中获取月份编号
【发布时间】:2017-05-03 19:54:40
【问题描述】:

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

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

预期输出:04

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

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

不断遇到错误 - 在预期非数字的地方发现了数字等。

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

【问题讨论】:

  • 你这样做是正确的。将您的字符串转换为日期,然后运行 ​​to_char 以获取月份的数值。你的错误来自别的东西。您能否提供有关此问题的代码以及您收到的实际错误?
  • 我怀疑您的列中的字符串值不是您期望的格式。

标签: sql oracle


【解决方案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

【讨论】:

  • 我得到一个'缺少右括号'。我认为当您从问题转换它时,您保留了 to_char 和 to_char 格式的括号。
  • 你是对的,我的错,留在你帖子的括号里。
【解决方案2】:

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

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

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

我得到:

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

【讨论】:

    猜你喜欢
    • 2011-03-12
    • 2015-09-25
    • 2015-11-29
    • 2017-02-19
    • 2017-10-03
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多