如何获取具有全时间戳的java.sql.Date对象

时间:2013-08-28 07:14:23

标签: java sql sql-server date

以下是我的代码段

for(int i = 0;i < 24;i++) {
Calendar calHourlyObj = new GregorianCalendar(2013,05,05);
calHourlyObj.add(Calendar.HOUR_OF_DAY, i);
java.sql.Date sqldate1 = new java.sql.Date((calHourlyObj.getTime()).getTime());
System.out.println("sqldate1"+sqldate1);
}

这里有一个'calHourlyObj'的日历对象是一个特定的日期范围,我将日历对象设置为循环中每天的每个小时。当我将此calHourlyObj分配给java.util.Date时,我得到了日期我希望将这个日期对象传递给只接受java.sql.Date格式的日期的存储过程。如果我将我的calHourlyObj分配给java.sql.Date,那么时间戳将丢失,并且每个时间戳都会丢失。时间日期设置为第一个小时。

我怎样才能获得带有完整时间戳的java.sql.Date。

或者我已经尝试了

java.sql.Timestamp sqldate1 = new java.sql.Timestamp((calHourlyObj.getTime()).getTime());
cstmt.setTimeStamp(1,sqldate1 )

java.sql.Timestamp sqldate1 = new java.sql.Timestamp((calHourlyObj.getTime()).getTime());
cstmt.setObject(1,sqldate1,TYPES.Oracle);

但是这里没有得到任何编译错误。但是我的存储过程没有按预期运行。我怎么能用完整的时间戳来填充java.sql.Date对象?

1 个答案:

答案 0 :(得分:0)

您必须使用TIMESTAMP类型创建列,而Oracle DATE只能解析为第二列。你真的需要毫秒精度吗?你的OJDBC版本是什么?

无论如何,做setTimestamp(...,new Timestamp(System.currentMillis()))是正确的做法。