我们正在使用远程系统提供的存储过程。出于测试目的,我从我的开发机器调用此过程。现在的问题是,如果我打电话从蟾蜍程序,一切都OK。但是当我使用SQL Developer调用它时会发生错误。to_char根据调用过程的位置产生不同的输出
我调试和调试,发现这一点:在该过程中,过期日期生成并传递给Web服务(不要问我为什么)。
这里是负责生成日期行:
vt_User.EXPDATE := TO_DATE('01.01.2025', 'dd.mm.yyyy');
vs_Value := to_char(vt_User.EXPDATE, 'YYYY-MM-DD"T"HH24:MI:SSTZR');
vs_Value,就像是产生从蟾蜍调用时:
2025-01-01T00:00:00+02:00
但是,如果我从SQL开发打电话,它就像:
2025-01-01T00:00:00EUROPE/ATHENS
除了这些行以外的所有内容都完全相同。我尝试了许多不同的方法,试图设置NLS_LANG,改变会话等,但没有结果。
我需要解决这个问题,因为当我从Java代码中调用程序时也会出现同样的情况,这也是主要问题。
我连接到使用TNS的蟾蜍和SQL Developer中,薄的Java代码驱动程序远程数据库。
什么是vt_User.EXPDATE的类型?你确定这是一个日期而不是时间戳吗? –
它是'TIMESTAMP WITH TIME ZONE'的类型' – SelimOber
当你这样做时会得到什么:select dualtime中的sessiontimezone,dbtimezone; –