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