从数据库中显示java中的时间戳值
数据库中的日期值是2011-03-19 18:49:04
Timestamp date; ResultSet rs=smt.executeQuery("select * from posttopic where name='"+logn+"'"); while(rs.next()){ name=rs.getString(1); title=rs.getString(2); subject=rs.getString(3); message=rs.getString(4); date=rs.getTimestamp(5); System.out.print(date); }
上述函数返回的日期值是2011-03-19 18:49:04.0。
为什么它在最后附加.0?如何删除它?
问题是关于格式化Date
/ Timestamp
,而不是内部精度(日期保持毫秒)。 尝试将Timestamp
格式化为不显示小数秒,例如使用SimpleDateFormat
:时间戳日期;
ResultSet rs=smt.executeQuery("select * from posttopic where name='"+logn+"'"); // Create a date formatter with pattern as required: year-month-day hour:minute:second java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); while(rs.next()) { name=rs.getString(1); title=rs.getString(2); subject=rs.getString(3); message=rs.getString(4); date=rs.getTimestamp(5); System.out.print(sdf.format(date)); // Format the date using the specified pattern. }
java.sql.Timestamp
(由getTimestamp
返回)包含一个纳秒组件,其toString()
方法将该纳秒值附加到String的末尾。 在您的情况下,纳秒值为零(您的数据只有一秒精度)。
请注意,虽然java.sql.Timestamp
是java.util.Date
的子类,但您应该小心处理它。 来自Javadoc :
此类型是
java.util.Date
和单独的纳秒值的组合。 只有整数秒存储在java.util.Date
组件中。 分数秒 – 纳米 – 是分开的。 传递一个不是java.sql.Timestamp
实例的对象时,Timestamp.equals(Object)
方法永远不会返回true,因为日期的nanos组件是未知的。 因此,Timestamp.equals(Object)
方法与java.util.Date.equals(Object)
方法不对称。 此外,哈希码方法使用底层的java.util.Date
实现,因此在其计算中不包括nanos。由于
Timestamp
类和上面提到的java.util.Date
类之间存在差异,因此建议代码不要将Timestamp
值一般视为java.util.Date
的实例。Timestamp
和java.util.Date
之间的inheritance关系实际上表示实现inheritance,而不是类型inheritance。