oracle 存储过程中使用date 时、分、秒丢失

今天有一开发兄弟找我,说出现一奇怪现象,在存储过程中赋date类型的值,时、分、秒都丢失了,下面来做个试验:

SQL> drop table test purge;

SQL> create table test

(

fill_date  date

);

SQL> insert into test values(sysdate);

SQL> commit;

SQL> select to_char(fill_date,‘yyyy-MM-dd HH24:mi:ss‘) from test;

TO_CHAR(FILL_DATE,‘

-------------------

2014-07-18 17:47:22

SQL> CREATE OR REPLACE PROCEDURE test_p

is

s_sql varchar2(500);

s_date date;

begin

s_date:= to_date(‘2014-07-18 17:24:32‘,‘yyyy-MM-dd HH24:mi:ss‘);

s_sql := ‘UPDATE test SET fill_date = ‘‘‘||s_date ||‘‘‘‘;

execute immediate s_sql;

commit;

end;

/

SQL> call test_p();

SQL> select to_char(fill_date,‘yyyy-MM-dd HH24:mi:ss‘) from test;

TO_CHAR(FILL_DATE,‘

-------------------

2014-07-18 00:00:00     --可以看到确实时、分、秒已经丢失,怀疑是隐式转换导致

--调整下存储过程,看打印出什么来。

SQL> CREATE OR REPLACE PROCEDURE test_p

is

s_sql varchar2(500);

s_date date;

begin

s_date:= to_date(‘2014-07-18 17:24:32‘,‘yyyy-MM-dd HH24:mi:ss‘);

s_sql := ‘UPDATE test SET fill_date = ‘‘‘||s_date ||‘‘‘‘;

dbms_output.put_line(s_sql);

execute immediate s_sql;

commit;

end;

/

SQL> set serveroutput on

SQL> call test_p();

UPDATE test SET fill_date = ‘18-7月 -14‘

调用完成。

--确认发生了隐式转换,那就使用绑定变量了

SQL> CREATE OR REPLACE PROCEDURE test_p

is

s_sql varchar2(500);

s_date date;

begin

s_date:= to_date(‘2014-07-18 17:24:32‘,‘yyyy-MM-dd HH24:mi:ss‘);

s_sql := ‘UPDATE test SET fill_date = :1‘;

execute immediate s_sql using s_date;

commit;

end;

/

SQL> call test_p();

调用完成。

SQL> select to_char(fill_date,‘yyyy-MM-dd HH24:mi:ss‘) from test;

TO_CHAR(FILL_DATE,‘

-------------------

2014-07-18 17:24:32

oracle 存储过程中使用date 时、分、秒丢失

时间: 2024-11-06 16:10:51

oracle 存储过程中使用date 时、分、秒丢失的相关文章

JavaScript基础 Date(年,月,日,时,分,秒,毫秒) 多个整型赋值

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

Oracle存储过程中异常Exception的捕捉和处理

Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Varchar2) AUTHID CURRENT_USER AS --声明异常 some_kinds_of_err EXCEPTION; -- Exception to indicate an error condition v_ErrorCode NUMBER; -- Variable to hold

基于jqeury/zepto的年/月/日 时:分:秒 时间快捷控件(支持键盘操作)

最近在项目中屡次遇到时分秒格式的时间输入需求, 还老被吐槽说这个时间输入贼蛋疼,一不小心就输错,而且花费的时间不少.为了堵住悠悠用户之口,也为了今后有需求能直接拿来使用~~so整了这个简易的小控件.支持根据默认时间格式自动生成对应格式控件,支持键盘上下按键调整时间(长按连续调整), 支持键盘左右按键切换时间输入位置,当然...时间控件的位置完全可以自行定义 HTML和CSS狠简单: <style> form, p, span, div, ul, li, input, dl, dt, dd, h

JS实现倒计时(天数,时,分,秒)

<!DOCTYPE html> <html> <head> <meta charset="utf-8" > <title>JS实现倒计时(天数,时,分,秒)</title> <link rel="stylesheet" type="text/css" href="../css/reset.css"> <link rel="sty

Oracle存储过程中跳出循环的写法

Oracle存储过程中跳出循环的写法 博客分类: oracle Oracle 记录exit和return的用法 exit用来跳出循环 loop IF V_KBP IS NULL THEN           EXIT;    END IF; end loop; return跳出存储过程 loop IF V_KBP IS NULL THEN         return;    END IF; end loop; 跳出loop 一次循环 oracle 11g已提供continue; oracle

php计算时间差/两个时间日期相隔的天数,时,分,秒.

<?php function timediff( $begin_time, $end_time ) { if ( $begin_time < $end_time ) { $starttime = $begin_time; $endtime = $end_time; } else { $starttime = $end_time; $endtime = $begin_time; } $timediff = $endtime - $starttime; $days = intval( $timed

将毫秒 换算成(天 时 分 秒 毫秒)

啥也不多说了,直接贴代码,需要的朋友可以拿去直接用,代码比较简单 /* * 毫秒转化 */ public static String formatTime(long ms) { int ss = 1000; int mi = ss * 60; int hh = mi * 60; int dd = hh * 24; long day = ms / dd; long hour = (ms - day * dd) / hh; long minute = (ms - day * dd - hour *

Oracle 存储过程中的 =&gt;

oracle实参与形参有两种对应方式1.一种是位置方式,和面向对象语言参数传递类似;2.另外一种是=> 作为形参对应,因为位置对应方法有缺限,比如一个函数有3个参数,但第2个是可以不传(有默认值),这里就没办法位置对应方法,oralce内部一般用此种方法作参数传递. CREATE OR REPLACE PROCEDURE HelloWorld( p_user_name VARCHAR2, p_val1 VARCHAR2 DEFAULT ' Good Moning,', p_val2 VARCHA

java 实现往oracle存储过程中传递array数组类型的参数

注:本文来源于 <  java 实现往oracle存储过程中传递array数组类型的参数  > 最近项目中遇到通过往存储过程传递数组参数的问题, 浪费了N多个小时,终于有点头绪. 具体的代码就不写上了,因为项目中存储过程的调用方法全部是封装好的(好像现在都这样,都姓3层,嘿嘿) 原理: 1.一维数组 A.单纯的一维数组的话,直接建立一个table类型就可以 1 TYPE TYPE_VARCHAR AS TABLE OF VARCHAR2(200); 2.多维数组 A.多维数组就要稍加修改了,如