如何创建函数并从数字

时间:2016-10-30 01:32:03

标签: plsql

如果我想写一个函数get_date,它正在接收日期代码并在表格中返回日期' YYYY-MM-DD'例如,如果公司在其文本文件中发送一个4位数的日期代码:例如,1234,其中1表示2001年,234表示2001年的第234天?

2 个答案:

答案 0 :(得分:1)

只需使用内置TO_DATE功能。

如果您深入了解文档,您会发现:
https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#g195443

+---------+---------------------+------------------------------------------------------------------------------+
| Element | Specify in TO_*     | Description                                                                  |
|         | datetime functions? |                                                                              |
+---------+---------------------+------------------------------------------------------------------------------+
| DDD     | Yes                 | Day of year (1-366).                                                         |
+---------+---------------------+------------------------------------------------------------------------------+
| RR      | Yes                 | Lets you store 20th century dates in the 21st century using only two digits. |
|         |                     | See Also: Additional discussion on RR datetime format element                |
|         |                     | in the Oracle Database SQL Reference                                         |
+---------+---------------------+------------------------------------------------------------------------------+



由于 RR 格式元素一年需要两位数字,但您的源字符串只有一位数字,因此只需将0添加到源字符串中。
/>

to_date(  '0' || source_string,  'RRDDD' )


例子:

SELECT  
  to_date(  '0' || dd,  'RRDDD' )

FROM (
    SELECT '1234' dd FROM dual
    UNION ALL
    SELECT '422' dd FROM dual
    UNION ALL
    SELECT '9365' dd FROM dual
);

TO_DATE('0'||DD,'RRDDD')
------------------------
2001/08/22              
2004/01/22              
2009/12/31

答案 1 :(得分:0)

我希望您收到5位数字2位数的代码是年份,接下来的3位数字是天数

CREATE OR REPLACE
  FUNCTION date_format(
      input NUMBER)
    RETURN VARCHAR2
  AS
    my_date VARCHAR2(22);
  BEGIN
    SELECT TO_CHAR(to_date(input,'rrddd'),'yyyy-MM-DD') INTO my_date FROM dual;
    RETURN my_date ;
  END;

创建了功能。

select date_format(12111) from dual;

DATE_FORMAT(12111)

2012-04-20