how to convert date into month number?

后端 未结 7 1762
闹比i
闹比i 2021-01-19 14:40

I have a column Month in my table. The month name and date are stored in this month column like

Month    
01-JAN-12 
02-FEB-12 


        
相关标签:
7条回答
  • 2021-01-19 14:44

    Use TO_CHAR function as in TO_CHAR(my_column, 'MM').

    For your specific format you would need the format converter TO_CHAR(month, 'FmMM') (thanks to Nicholas Krasnov for this trick).

    If your month column is not already of a date type you will first need to convert it to a date: TO_CHAR(TO_DATE(month, 'DD-Mon-IY'), 'FmMM').

    0 讨论(0)
  • 2021-01-19 14:45
    select 
    to_char(to_date('01-JAN-12','dd-mon-yy'),'mm') from dual;
    
    0 讨论(0)
  • 2021-01-19 14:48

    You can use the "DatePart" function too :

    http://docs.oracle.com/cd/E10530_01/doc/epm.931/html_esb_techref/maxl/dml/funcs/datepart.htm

    0 讨论(0)
  • 2021-01-19 14:50

    Totally agree regarding writing a case when Oracle offers built-in functionality:

    SELECT EXTRACT(MONTH FROM DATE '2012-03-15') FROM DUAL;
    
    SELECT EXTRACT(MONTH FROM TO_DATE('01-JAN-12', 'DD-MON-RR')) month_to_number FROM DUAL;
    
    select to_number(to_char(to_date('01-JAN-12','dd-mon-yy'),'mm')) month_to_number from     dual;
    
    select to_number(to_char(trunc(sysdate), 'mm')) month_to_number from dual;
    
    0 讨论(0)
  • 2021-01-19 14:50
            SELECT  ( CASE yourDate
            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
           END )
    
    0 讨论(0)
  • 2021-01-19 14:51

    Extract works perfectly for this

    EXTRACT extracts and returns the value of a specified datetime field

    with fullYear as(
      select (to_date('01-jan-12') + 29*level) dte
        from dual
      connect by level <= 12
      )
    
    select extract(month from dte) month, dte from fullYear ;
    

    gives you

    MONTH       DTE
    1           January, 30 2012 00:00:00+0000
    2           February, 28 2012 00:00:00+0000
    3           March, 28 2012 00:00:00+0000
    4           April, 26 2012 00:00:00+0000
    5           May, 25 2012 00:00:00+0000
    6           June, 23 2012 00:00:00+0000
    7           July, 22 2012 00:00:00+0000
    8           August, 20 2012 00:00:00+0000
    9           September, 18 2012 00:00:00+0000
    10          October, 17 2012 00:00:00+0000
    11          November, 15 2012 00:00:00+0000
    12          December, 14 2012 00:00:00+0000
    
    0 讨论(0)
提交回复
热议问题