java.sql.Date 时分秒去哪了?

很久没用ResultSet。

在修改一段别人的代码时,发现用rs.getDate()方法获取的值始终只能显示出“年月日”,而无法显示“时分秒”。

不管怎么进行日期格式转换都无果,比如Dateformat、SimpleDateformat、java.sql.Timestamp,

new java.sql.Timestamp(new java.util.Date().getTime()),等等方法。

网上有人说java.sql.Date实际上是保存了时分秒,只是没有显示出来而已。这种说法其实是错误的。

参考[mysql-connector-java-5.1.6-bin.jar]驱动包中的实现可知。具体类及方法是:

1.类:com.mysql.jdbc.TimeUtil
方法:static final java.sql.Date fastDateCreate(boolean useGmtConversion, Calendar gmtCalIfNeeded, Calendar cal, int year, int month, int day)
2.类:com.mysql.jdbc.ResultSetImpl
方法:public Date getDate(int columnIndex, Calendar cal)
3.类:com.mysql.jdbc.ResultSetRow
方法:protected final Date getDateFast(int columnIndex, byte[] dateAsBytes, int offset, int length, ConnectionImpl conn, ResultSetImpl rs, Calendar targetCalendar)

EOF.最后,想获取完整时间其实是可以用rs.getTimestamp()方法的。。。。单独获取”时分秒“也可以用rs.getTime()

你可能感兴趣的:(java.sql.Date 时分秒去哪了?)