OracleDataAdapter.Fill在字符串中转换日期时间

我有一个存储过程,该存储过程在sql developer中执行时会返回一个字符串,该字符串包含一个带有以下字符串的字段:

'Wow look at this time: 20191113 13:24:44 \r\n now that is one cool datetime'

但是,在完成OracleDataAdapter的Fill操作之后,字符串如下所示:

'Wow look at this time: 13-NOV-19 \r\n now that is one cool datetime'

有什么方法可以阻止OracleDataAdapter弄乱我的字符串吗?

yuduotianguang 回答:OracleDataAdapter.Fill在字符串中转换日期时间

这不是OracleDataAdapter的问题,这是存储过程中的问题。您的存储过程很可能看起来像这样:

create or replace function my_cool_proc
    return varchar2
is
begin
    return 'Wow look at this time: '||sysdate||chr(13)||chr(10)||'now that is one cool datetime';
end;

在这种情况下,由于串联(sysdate运算符)字符串时Oracle的隐式转换规则,date(数据类型varchar2)被转换为||。从SQL Developer运行存储过程时,将使用SQL Developer的会话NLS设置将date值转换为varchar2值。从.NET代码运行存储过程时,.NET数据库驱动程序的NLS设置将应用于上述转换。

要使返回值稳定,必须在存储过程中将字符串串联之前将sysdate转换(=格式化)为字符串,即

create or replace function my_cool_proc
    return varchar2
is
begin
    return 'Wow look at this time: '||to_char(sysdate,'yyyymmdd hh24:mi:ss')||chr(13)||chr(10)||'now that is one cool datetime';
end;
本文链接:https://www.f2er.com/3135355.html

大家都在问