我晕,怎么的不出结果?????????

FREERUN 2002-10-24 01:53:12


vn_h1:=to_number(substr(to_char(sysdate,'YYYYMMDDHH24'),9,2));
vn_h2:=to_number(substr(to_char(vd_begin_call_date,'YYYYMMDDHH24'),9,2));

上面是我写一个存储过程的两句话,目的得出时间变量的小时数,赋给vn_h1,vn_h2
为什么条语句赋值成功,第二条不能赋值(一直为0),变量vd_begin_call_date
是date 类型,从表中得到一个时间,格式为(2002-10-24 12:01:01)。
各位帮帮我看一下,怎么回事呢 ? 3X!

...全文
23 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
luckysxn 2002-10-24
  • 打赏
  • 举报
回复
vd_begin_call_date是从表中取出的应该是有小时
你确认吗?
FREERUN 2002-10-24
  • 打赏
  • 举报
回复
to_char(vd_begin_call_date,'YYYYMMDDHH24')的值是多少?

我看了一下,为 2002101800,可能问题就在这吧,可是为什么这样呢?
vd_begin_call_date是从表中取出的应该是有小时的啊


zhaoyongzhu 2002-10-24
  • 打赏
  • 举报
回复
没有问题呀!!!
SQL> select doctime from test1 where id=1;

DOCTIME
----------------
2002-07-01 00:00
2002-05-01 10:12
2002-08-20 15:22
2002-07-01 00:00
2002-09-01 20:10

Elapsed: 00:00:00.41
SQL> select substr(to_char(doctime,'YYYYMMDDHH24'),9,2) from test1 where id=1;

SUBSTR(T
--------
00
10
15
00
20

Elapsed: 00:00:00.40
SQL> select to_number(substr(to_char(doctime,'YYYYMMDDHH24'),9,2)) from test1 wh
ere id=1;

TO_NUMBER(SUBSTR(TO_CHAR(DOCTIME,'YYYYMMDDHH24'),9,2))
------------------------------------------------------
0
10
15
0
20

Elapsed: 00:00:00.50
FREERUN 2002-10-24
  • 打赏
  • 举报
回复
单步调试vn_h2 老是0,
原来我是这么写的
select to_number(to_char(vd_begin_call_date,'HH24')) into vn_h1 from dual;
结果vn_h2都是0
penitent 2002-10-24
  • 打赏
  • 举报
回复
to_char(vd_begin_call_date,'YYYYMMDDHH24')的值是多少?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧