【问题标题】:How to pass date values in oracle?如何在 oracle 中传递日期值?
【发布时间】:2016-03-05 01:10:55
【问题描述】:

默认情况下,值是这样来的

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'))as "交互"

我试图通过这种格式的日期值得到 ORA-01843: not a valid month

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;

/

【问题讨论】:

  • 日期没有任何格式。日期是日期、期间。如果您有一个格式为2015-11-25 05:34:57字符串,则可以通过TO_DATE('2015-11-25 05:34:57','yyyy-mm-dd hh24:mi.ss') 将其转换为日期
  • 请编辑您的问题以包括pkg_campaign_interactions_qty.getCampaignIncomingQty 的规范(似乎需要日期,基于您的其他cmets?)和两个date_value 列的类型。

标签: oracle plsql oracle11g oracle10g


【解决方案1】:

您收到的错误消息意味着您尝试转换为日期的值没有指定的格式。

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

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

Not a valid month 表示字符串第一部分的值不是 1 到 12 之间的数字。

根据您提供的示例,您应该使用:

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

所以如果你有一个函数有一个日期类型的输入参数,你可以通过以下方式调用它:

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;

【讨论】:

  • 转换为to_char(o_date('2015-11-25 05:34:57', 'YYYY-MM-DD HH24:MI:SS'), ' MM/DD/YYYY') 格式我需要再次将此日期传递给日期类型的包体函数
  • 一旦有了日期类型,为什么要将其转换回字符?
  • 我需要传入 pkg_campaign_interactions_qty.getCampaignIncomingQty(Obj.object_id,Activated date,Completed date )) 作为“Interactions”,接受日期格式为 MM/dd/YYYY
  • 你的答案在我的答案中。使用我给你的格式,然后使用其他格式转换为 char。
  • 但是我创建的包是 CREATE OR REPLACE PACKAGE "PKG_CAMPAIGN_INTERACTIONS_QTY" as FUNCTION getCampaignIncomingQty(tableName IN VARCHAR2,ActivatedDate IN DATE,CompletedDate IN DATE) RETURN NUMBER;结束 PKG_CAMPAIGN_INTERACTIONS_QTY; / 日期类型
猜你喜欢
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
相关资源
最近更新 更多