【问题标题】:Concatenated Select List value returns 'not a valid month' when applied TO_DATE应用 TO_DATE 时,连接选择列表值返回“无效月份”
【发布时间】:2020-10-13 05:50:58
【问题描述】:

我有来自选择列表的月份和年份值,将它们连接成一个字符串。如果对字符串应用 TO_DATE,则返回“无效月份”错误。 下面是我的代码sn-p,

V_DATE_FROM_STR_TEST := TRIM('01-'||TRIM(TO_CHAR(:P3_FROM_MONTH))||'-'||TRIM(TO_CHAR(:P3_YEAR)));

V_DATE_TO_STR_TEST := TRIM('01-'||TRIM(TO_CHAR(:P3_TO_MONTH))||'-'||TRIM(TO_CHAR(:P3_YEAR)));

此行出现错误'not a valid month'

TRUNC(TO_DATE(V_DATE_FROM_STR_TEST, 'DD-MON-YYYY'))

我已尝试使用显示日期01-JAN-2020HTP.PRN(V_DATE_FROM_STR_TEST) 打印。

添加 LOV

月度LOV

select to_char(add_months(trunc(sysdate, 'yyyy'), level - 1), 'MONTH') d, 
to_char(add_months(trunc(sysdate, 'yyyy'), level - 1), 'MON') r
  from dual
connect by level <= 12

年LOV

    select YEAR d, YEAR r
from   (select to_number(to_char(sysdate,'yyyy')) -8 YEAR
from dual
UNION
select to_number(to_char(sysdate,'yyyy')) -7 YEAR
from dual
UNION
select to_number(to_char(sysdate,'yyyy')) -6 YEAR
from dual
UNION
select to_number(to_char(sysdate,'yyyy')) -5 YEAR
from dual
UNION
select to_number(to_char(sysdate,'yyyy')) -4 YEAR
from dual
UNION
select to_number(to_char(sysdate,'yyyy')) -3 YEAR
from dual
UNION
select to_number(to_char(sysdate,'yyyy')) -2 YEAR
from dual
UNION
select to_number(to_char(sysdate,'yyyy')) -1 YEAR
from dual
UNION
select to_number(to_char(sysdate,'yyyy')) YEAR
from dual
) order by year desc

我猜在选择列表值的日期字符串中添加了一些不需要的字符,我该如何删除它?

【问题讨论】:

    标签: oracle plsql oracle-apex


    【解决方案1】:

    如果您切换为数字,情况可能会有所改善。

    月份 LoV:显示 单词,但返回 数字

    select to_char(add_months(trunc(sysdate, 'yyyy'), level - 1), 'MONTH') d, 
           level r
      from dual
    connect by level <= 12;
    

    然后将其用于生成的字符串:

    to_date(lpad(:P3_FROM_MONTH, 2, '0') || :P3_YEAR, 'mmyyyy')
    

    此外,所有这些 TRIMs 看起来都没有必要,但好吧 - 我明白 - 你试图解决问题。

    【讨论】:

      【解决方案2】:

      虽然没有直接引用,但您可以简化“Year LOV”查询。

      select yr d, yr r
        from ( select extract(year from sysdate)-level +1 yr
                 from dual 
                connect by level <= 9
             )
       order by yr desc;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-28
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 2020-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多