Java 获取时间为00:00:00.0

Java 获取时间为00:00:00.0,java,sql,sql-server,Java,Sql,Sql Server,下面是我的存储过程 create procedure sp_process_job(@request_id varchar(25), @host varchar(20), created_on varchar(25) ) as begin set dateformat mdy SELECT CAST(@created_on as datetime) insert into t_job_details(request_id ,host, created_on)

下面是我的存储过程

create procedure sp_process_job(@request_id varchar(25), @host varchar(20),
     created_on varchar(25)
) 
as
begin

    set dateformat mdy
    SELECT CAST(@created_on as datetime)
    insert into t_job_details(request_id ,host, created_on) 
    values(@request_id,@host,@created_on)

end
当我使用SELECT转换日期时CAST@created_on作为日期时间

我得到的输出是2012-06-22 00:00:00.0时间是00:00:00.0

我要12:45:06.0。为什么我在所有地方都得到0

编辑: 从java代码调用上述过程

Date date = new Date();
Date insert_date = new java.sql.Date(date.getTime());
String insertquery = "{ call sp_process_job (?,?,?) }";

cs = con.prepareCall(insertquery.toString());
            cs.setString(1, id);
            cs.setString(2, host);
            cs.setDate(3, (java.sql.Date) insert_date);
cs.execute();

            con.commit();
我想您应该在java代码中使用java.sql.Timestamp,而不是只保存日期而不保存时间的java.sql.date。还有cs.setTimestamp


@created_on的价值是什么?您正在为此函数调用哪些参数?如何调用此存储过程?为什么要将日期时间值作为字符串传递?为什么要使用set-dateformat而不是使用CONVERT指定格式?您真的打算只返回转换后的datetime值,然后在insert中使用字符串值并依赖隐式转换吗?看起来您并没有向存储过程传递任何时间信息为了符合SQL日期的定义,必须通过将小时、分钟、秒和毫秒设置为零来“规范化”java.SQL.DATE实例包装的毫秒值……另外,顺便说一句,避免使用sp_uu作为存储过程名称的前缀。这个前缀是微软为系统存储过程名称保留的。非常感谢@Damien\u这个不信者
    java.sql.Timestamp insert_date = new java.sql.Timestamp(date.getTime());
    ....
    cs.setTimestamp(3, insert_date);