Oracle SQL函数返回日期格式

时间:2013-11-14 14:21:10

标签: oracle function date plsql date-format

我在Oracle PL-SQL上遇到小问题,

我创建了一个函数

最后看起来像这样:

 wynik := concat(miesiac,concat(dzien,rok));
 w_date := TO_DATE(wynik);
 return w_date;

它工作正常,但它以MM / DD / YYYY格式返回日期,我想以DD MONTH YYYY的格式返回,如何在没有改变全局设置的情况下达到该目标?

我试过搞乱:

w_date := TO_DATE(wynik,'DD MONTH YYYY');

但它给了我错误....

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

TO_DATE将字符串转换为日期,并使用为会话定义的默认日期格式呈现输出。如果要以不同方式显示它,请使用TO_CHAR功能或更改默认格式。

示例TO_CHAR用法:

TO_CHAR(sysdate, 'DD MONTH YYYY')

更改默认格式:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD MONTH YYYY';

答案 1 :(得分:1)

在内部,DATE存储为数字,而不是字符串,因此转换为DATE的字符串和使用的格式日期模型(显式或隐式地,来自会话参数)都不存在在创建变量期间,与DATE变量呈现给用户的方式有关。

要将DATE变量显示为字符串,应使用TO_CHAR函数,并使用格式掩码:

SELECT TO_CHAR(SYSDATE, 'DD MONTH YYYY') AS val FROM dual;
VAL                                                
----------------------------------------------------
14 LISTOPAD    2013      

要抑制多余的空格,请使用fm修饰符:

SELECT TO_CHAR(SYSDATE, 'DD fmMONTH YYYY') AS val FROM dual;
VAL                                                
----------------------------------------------------
14 LISTOPAD 2013  

答案 2 :(得分:0)

w_date := TO_CHAR(wynik,'DD MONTH YYYY');