我正在使用utl_file
来写入csv
文件。数据还包括日期列。这里的问题是
对于一位数字,当将数据插入csv
文件中时,第0天将被删除。
例如-将13年6月7日作为13年6月7日插入,如何确保0停留?
我已经to_char
和concat
“”,但我仍然只获得一位数字日期。生成的csv文件由第三方系统使用,因此无法csv
中进行任何更改。
我正在使用EBS 12.1.3。
谢谢
PL / SQL代码段
concat(concat('"',lv_proj_start_date),'"') ||','||
concat(concat('"',lv_proj_start_date_plus_1),'"') ||','||
我希望csv中的日期输出像07-Jun-13
但是在csv文件中,o / p为7-Jun-13
。
答案 0 :(得分:0)
假设两列均为DATE格式,则需要将日期明确转换为所需的任何格式,例如:
'"' || to_char(lv_proj_start_date, 'dd-Mon-yy', 'nls_date_language=english') || '","'
|| to_char(lv_proj_start_date_plus_1, 'dd-Mon-yy', 'nls_date_language=english') || '",'
我还转换了您的CONCAT
函数调用以使用串联运算符||
,因为这更容易阅读。我还尽可能结合了文本字符串。
我还使用了to_char()
的可选第三个参数来将日期语言显式设置为英语,从而使其独立于NLS。
最后一点:您是否绝对必须输出两位数年份的日期?时下首选4位数字,发布Y2K!
ETA:这是一个显示输出正确的示例:
DECLARE
lv_proj_start_date DATE := to_date('07/07/2019', 'dd/mm/yyyy');
lv_proj_start_date_plus_1 DATE := lv_proj_start_date + 1;
v_str VARCHAR2(4000);
BEGIN
v_str := '"Testing","' || to_char(lv_proj_start_date, 'dd-Mon-yy', 'nls_date_language=english') || '","'
|| to_char(lv_proj_start_date_plus_1, 'dd-Mon-yy', 'nls_date_language=english') || '"';
dbms_output.put_line(v_str);
END;
/
"Testing","07-Jul-19","08-Jul-19"