使用用户出口从oracle表单获取日期值

使用用户出口从oracle表单获取日期值,oracle,oracleforms,oracle-pro-c,Oracle,Oracleforms,Oracle Pro C,我正在尝试使用用户EXEC工具从ORACLE表单中将日期字段检索到char变量,如下所示: EXEC TOOLS GET filter.generation_depuis INTO :qstrGenerationDepuis; 当我尝试显示变量qstrGenerationDepuis时,我得到以下值: 27-JANV.-2 而不是: 27/01/2020 知道qstrGenerationDepuis变量声明为10个字符的字符串 如何检索用户出口中的字段以获得正确的日期格式 用户出口文件的

我正在尝试使用用户EXEC工具从ORACLE表单中将日期字段检索到char变量,如下所示:

EXEC TOOLS GET filter.generation_depuis INTO :qstrGenerationDepuis;
当我尝试显示变量qstrGenerationDepuis时,我得到以下值:

27-JANV.-2 
而不是:

27/01/2020
知道qstrGenerationDepuis变量声明为10个字符的字符串

如何检索用户出口中的字段以获得正确的日期格式

用户出口文件的扩展名为.pcs


提前多谢。

两步程序如何

首先获取值:

EXEC TOOLS GET filter.generation_depuis INTO :qstrGenerationDepuis;
将项目设置为
27-JANV.-2

然后将其转换为所需的格式,但首先,您必须知道获得的格式。这是法语,不是吗?看起来像是2007年1月27日。。。哪一年?什么是
-2
?它可以是2020年到2029年之间的任何一年,因为变量长度为10个字符:

SQL> select to_char(date '2020-01-27', 'dd-MON-yy', 'nls_date_language = french') datum from dual;

DATUM
-----------
27-JANV.-20
         ^ tenth character is "2"; "0" is lost
12345678901
如果我们假设这是今年,那么您可以尝试以下方法:

  • 通过添加当前年份的最后一位数字将字符串
    27-JANV.-2
    转换为日期(这就是
    substr
    的作用)
  • 应用于_char
    到具有所需格式掩码的新日期值
    27-JANV.-20

    SQL> select to_char(to_date('27-JANV.-2' || substr(to_char(sysdate, 'yyyy'), -1),
      2                         'dd-mon-rr',
      3                         'nls_date_language = french'),
      4                 'dd/mm/yyyy') result
      5  from dual;
    
    RESULT
    ----------
    27/01/2020
    
并不是说这是不可能的(显然),而是——你宁愿

  • filter.generation\u depuis返回所需的格式掩码
  • 或者,如果不可能,请将项目/变量长度放大到至少11个字符,因为您将丢失最后一个数字
请注意,您可能不必使用
nls\u date\u语言
参数;我知道,因为我的数据库是克罗地亚语的,我们的格式与你的格式大不相同