首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在转换整个输入字符串错误之前结束日期格式图片

在转换整个输入字符串错误之前结束日期格式图片
EN

Stack Overflow用户
提问于 2014-07-25 08:03:11
回答 2查看 25.2K关注 0票数 1

我有这样的程序:

代码语言:javascript
运行
复制
create or replace Procedure return_rows_LECTURE_BY_DATE (in_date in date, out_cursor OUT SYS_REFCURSOR) As

Begin
     OPEN out_cursor for
     select *
     FROM COURSE_LECTURE
     WHERE LECT_DATE_TIME_START >= to_timestamp(in_date, 'dd-mm-yyyy')
     and       LECT_DATE_TIME_START < to_timestamp(in_date+1, 'dd-mm-yyyy')
    ORDER BY LECT_DATE_TIME_START;
End;

输入:日期,输出:此日期的讲座。表(视图)中的日期是时间戳。

我想做这个手术。我试过这个:

代码语言:javascript
运行
复制
declare 
k SYS_REFCURSOR;
--t DATE:= to_date('2010-12-14:09:56:53', 'YYYY-MM-DD:HH24:MI:SS') ;
res COURSE_LECTURE%rowtype; 
begin
return_rows_LECTURE_BY_DATE(to_date('2010-12-14', 'YYYY-MM-DD'),k);
loop
  FETCH  k into res;
  Exit when k%notFound;
  DBMS_OUTPUT.PUT_LINE(res.COURSE_NAME );
  end loop;
end;

但我发现了一个错误:

错误报告- ORA-01830:在转换整个输入字符串ORA-06512: at "HR.RETURN_ROWS_LECTURE_BY_DATE",第4行或-06512:在第6行01830处,日期格式图片结束。00000 -“日期格式图片在转换整个输入字符串之前结束”

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-25 08:10:09

通过使用TO_TIMESTAMP()将日期转换为时间戳,这需要一个字符作为参数。您应该使用CAST(),它将一种数据类型转换为另一种数据类型;例如:

代码语言:javascript
运行
复制
WHERE LECT_DATE_TIME_START >= CAST(in_date AS TIMESTAMP)

您应该使用从日期到时间戳的所有转换来完成此操作;因此,to_timestamp(in_date+1, 'dd-mm-yyyy')变成了CAST((in_date + 1) AS TIMESTAMP)

票数 6
EN

Stack Overflow用户

发布于 2014-07-25 08:14:33

问题在于语句to_timestamp(in_date,‘dd yyyy’)提供的格式太短,您可以在没有任何格式条件to_timestamp(in_date)的情况下使用它。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24950858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档