我在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');
但它给了我错误....
感谢您的帮助。
答案 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');