Stu*_*ent 2 sql oracle plsql date-formatting
我December 2018做了一个传递日期参数的函数时,很难像这样仅输出月份和年份
。
我用参数做了一个简单的函数,返回的日期仅显示下面的测试代码,显示日期和年份。month如上所述,我使用了mon代替了mon,但是在eg之间有一个差距December 2019。
function get_month(p_month DATE DEFAULT sysdate)
return VARCHAR2
is
v_month varchar2(50);
begin
select to_char(trunc(p_month), 'Month yyyy') into v_month from dual;
return v_month;
commit;
end;
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望以全名形式表示月份的输出,to_char(sysdate,'Month DDth, YYYY')但中间不要包含日。
在文档中对此进行了解释:
Oracle使用尾随空白字符和前导零将格式元素填充为恒定宽度。宽度等于相关格式模型最大元素的显示宽度...
- 字符元素MONTH,MON,DAY和DY用结尾空格填充到最长的完整月份名称的宽度...
但是也:
FM修饰符可抑制TO_CHAR函数的返回值中的上述填充。
因此,正如@WernfriedDomscheit在评论中所说,添加FM修饰符:
select to_char(trunc(p_month), 'FMMonth yyyy') into v_month from dual;
Run Code Online (Sandbox Code Playgroud)
尽管trunc()没有添加任何内容:
select to_char(p_month, 'FMMonth yyyy') into v_month from dual;
Run Code Online (Sandbox Code Playgroud)
或更简单地说,避免上下文切换,而直接分配:
v_month := to_char(p_month, 'FMMonth yyyy');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |