首页 文章

如何在oracle中传递日期值?

提问于
浏览
0

默认情况下,值就是这样

activated_date.date_value为“激活日期”,completed_date.date_value为“完成日期”,

2015-11-25 05:34:57 2015-11-25 05:35:03如何以包装体的MM / dd / YYYY格式传递日期值这是包体

pkg_campaign_interactions_qty.getCampaignIncomingQty(Obj.object_id,TO_DATE(TO_CHAR(activated_date.date_value, 'MM / DD / YYYY'), 'MM / DD / YYYY'),TO_DATE(TO_CHAR(completed_date.date_value, 'MM / DD / YYYY') ,'MM / dd / YYYY'))作为“交互”

我尝试将此格式的日期值传递给ORA-01843:不是有效月份

to_date(activated_date.date_value,'MM/dd/YYYY') as "Activated Date",to_date(completed_date.date_value,'MM/dd/YYYY') as "Completed Date",

这是我的包裹体

CREATE OR REPLACE PACKAGE "PKG_CAMPAIGN_INTERACTIONS_QTY" as FUNCTION getCampaignIncomingQty(tableName IN VARCHAR2,ActivatedDate IN DATE,CompletedDate IN DATE) RETURN NUMBER end PKG_CAMPAIGN_INTERACTIONS_QTY;

/

1 回答

  • 2

    您获得的错误消息意味着您尝试转换为日期的值不具有指定的格式 .

    to_date(activated_date.date_value,'MM/dd/YYYY')
    

    只有当activated_date.date_value是一个包含MM / dd / YYYY格式的日期的字符串时,才会给你一个日期 .

    不是有效月份表示字符串第一部分的值不是1到12之间的数字 .

    根据您给出的样本,您应该使用:

    to_date(activated_date.date_value,'YYYY-MM-DD')
    

    因此,如果您的函数具有date类型的输入参数,则可以通过以下方式调用它:

    create or replace my_function(p_date date) return number...
    
    declare
      my_number number;
      my_date_string1 varchar2(20);
      my_date_string2 varchar2(20);
    begin
    
      -- some string representing dates in different formats.
      my_date_string1 := '2015-12-01';
      my_date_string2 := '15/11/2015';
    
      -- Call the function. Make sure to convert the string into a
      -- date using the correct format.
      my_number := my_function(to_date(my_date_string1,'YYYY-MM-DD'));
      my_number := my_function(to_date(my_date_string2,'DD/MM/YYYY'));
    end;
    

相关问题