将月份名称转换为月份编号 SQL

时间:2021-07-27 08:57:15

标签: sql oracle date

ORACLE SQL 中是否有一个函数可以将月份名称转换为月份编号,但只是没有日期和年份? 例如我有 FEB,我想在 02 转换它

1 个答案:

答案 0 :(得分:3)

您可以使用 CASE 表达式:

SELECT CASE month_name
       WHEN 'JAN' THEN 1
       WHEN 'FEB' THEN 2
       WHEN 'MAR' THEN 3
       WHEN 'APR' THEN 4
       WHEN 'MAY' THEN 5
       WHEN 'JUN' THEN 6
       WHEN 'JUL' THEN 7
       WHEN 'AUG' THEN 8
       WHEN 'SEP' THEN 9
       WHEN 'OCT' THEN 10
       WHEN 'NOV' THEN 11
       WHEN 'DEC' THEN 12
       ELSE NULL
       END AS month_number
FROM   your_table;

DECODE 函数:

SELECT DECODE(
         month_name,
         'JAN', 1,
         'FEB', 2,
         'MAR', 3,
         'APR', 4,
         'MAY', 5,
         'JUN', 6,
         'JUL', 7,
         'AUG', 8,
         'SEP', 9,
         'OCT', 10,
         'NOV', 11,
         'DEC', 12
       ) AS month_number
FROM   your_table;

TO_CHARTO_DATE

SELECT TO_CHAR(
         TO_DATE(month_name, 'MON', 'NLS_DATE_LANGUAGE=American'),
         'MM'
       ) AS month_number
FROM   your_table;

EXTRACTTO_DATE

SELECT EXTRACT(
         MONTH FROM TO_DATE(month_name, 'MON', 'NLS_DATE_LANGUAGE=American')
       ) AS month_number
FROM   your_table;