从数据库中显示java中的时间戳值

Dee*_*eep 4 java timestamp jdbc

数据库中的日期值是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);
}
Run Code Online (Sandbox Code Playgroud)

上述函数返回的日期值是2011-03-19 18:49:04.0.

为什么它会在最后添加.0?如何删除它?

ska*_*man 6

java.sql.Timestamp(由返回getTimestamp)包括纳秒组件,并且其toString()方法将纳秒值附加到字符串的末尾.在您的情况下,纳秒值为零(您的数据只有一秒精度).

请注意,虽然java.sql.Timestamp是子类java.util.Date,但您应该小心对待它.来自Javadoc:

此类型是a java.util.Date和单独的纳秒值的组合.只有整数秒存储在java.util.Date组件中.分数秒 - 纳米 - 是分开的.Timestamp.equals(Object)传递不是实例的对象时,该方法永远不会返回true java.sql.Timestamp,因为日期的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实际上表示实现继承,而不是类型继承.