title: mssql 2005 datetime and jdbc
body: <p>How can I insert datetime in MS SQL 2005 with JDBC? I using stored procedures to insert in DB:</p>
  
  <pre><code>ALTER proc [dbo].[sp_insertid_report]
  @stream_time_gmt as datetime,
  @stream_time_local as datetime,
  @start_time_gmt as datetime,
  @end_time_gmt as datetime,
  @start_time_local as datetime,
  @end_time_local as datetime,
  @note_id as int,
  @reported_by as varchar(100),
  @date_reported as datetime,
  @date_created as datetime,
  @date_updated as datetime,
  @stream_id as int,
  @Fp_file_path as varchar(300),
  @Fp_name as varchar(200), 
  @Is_Allowed as varchar(2)
  
  as
  
  begin  
  insert into id_reports(stream_time_gmt,stream_time_local,start_time_gmt,end_time_gmt,start_time_local,end_time_local,
  note_id,reported_by,date_reported,date_created,date_updated,stream_id,Fp_file_path,Fp_name,Is_Allowed)
  values(@stream_time_gmt,@stream_time_local,@start_time_gmt,@end_time_gmt,@start_time_local,
  @end_time_local,@note_id,@reported_by,@date_reported,@date_created,@date_updated,@stream_id,@Fp_file_path,@Fp_name,@Is_Allowed)
  end 
  </code></pre>
  
  <p>And my JDBC code is:</p>
  
  <pre><code>    callableStatement = connection.prepareCall("{ call dbo.sp_insertid_report(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }");
          callableStatement.setDate(1, new Date(cvtToGmt(new java.util.Date(modifiedTime.toMillis())).getTime()));
          callableStatement.setDate(2, new Date(modifiedTime.toMillis()));
          callableStatement.setDate(3, new Date(cvtToGmt(startTime).getTime()));
          callableStatement.setDate(4, new Date(cvtToGmt(endTime).getTime()));
          callableStatement.setDate(5, new Date(endTime.getTime()));
          callableStatement.setDate(6, new Date(endTime.getTime()));
          callableStatement.setInt(7, songID);
          callableStatement.setString(8, AudioMatcherService.hostName);
          java.util.Date date = new java.util.Date();
          callableStatement.setDate(9, new Date(date.getTime()));
          callableStatement.setDate(10, new Date(date.getTime()));
          callableStatement.setDate(11, new Date(date.getTime()));
          callableStatement.setInt(12, channel.getAssignmentID());
          callableStatement.setString(13, "no");
          callableStatement.setString(14, "no");
          callableStatement.setString(15, "Y");
          callableStatement.execute();
  </code></pre>
  
  <p>But this is not inserting hour, minute, second, milliseconds in DB? How can I insert this information from JDBC? Thanks in advance. I find it very hard to understand date and time things.. so many variations everywhere..</p>
  
  <p><strong>EDIT</strong></p>
  
  <p>Table structure is: </p>
  
  <p><img src="https://i.stack.imgur.com/fJO3l.png" alt="enter image description here"></p>
  
  <p><strong>EDIT</strong></p>
  
  <p>Method cvtToGmt() is from <a href="https://stackoverflow.com/questions/10599109/how-to-convert-a-local-date-to-gmt/10599247#10599247">How to convert a local date to GMT</a></p>