前一段时间练习时候的一个知识点,今天总结一下:
2010-11-22 21:58:10.63。 其实就是2010-11-22 21:58:10.630,我们把它存入数据库,显示的样子就是2010-11-22 21:58:10.63。
这就像我们掐表说你100米跑了十一秒五,是11分半的意思。 而是十一秒零五是11.05秒。
2010-11-22 21:58:10.063和2010-11-22 21:58:10.63要注意区分。
如果是 2010-11-22 21:58:10.63 这时,我们从数据库中得到的字符串是2010112221581063
如果是 2010-11-22 21:58:10.063 , 这 时,我们从数据库中得到的字符串是20101122215810063
还有如果是Timestamp类我们最好使用java.sql.Timestamp类进行操作。
比较时间前后
(如果使用java.text.SimpleDateFormat(YYYY-MM-DD HH:mm:ss.SSS)生成的Date
然后再使用Data的方法,对于2010-11-22 21:58:10.63和 2010-11-22 21:58:10.601 的比较将会出现问题)
boolean | after (Timestamp ts) 指示此 Timestamp 对象是否晚于给定的 Timestamp 对象。 |
比较时间前后
(接上,他会认为601比63大,但是实际上63是630,应该是63大)
boolean | before (Timestamp ts) 指示此 Timestamp 对象是否早于给定的 Timestamp 对象。 |
*同时,Timestamp的做成,我只知道有下面一种方式:
把字符串转换成Timestamp类型:(这么构造时,2010112221581063,会得到 2010-11-22 21:58:10.630 这种数据)
static Timestamp | valueOf (String s) 将使用 JDBC 时间戳转义格式的 String 对象转换为 Timestamp 值。 |
如果使用SimpleDateFormat方法( YYYY-MM-DD HH:mm:ss.SSS SimpleDateFormat.parse)构造出Date,再用
Timestamp (long time)
使用毫秒时间值构造 Timestamp
对象。
同样会出现上面的问题,认为601比63大(通过测试可以判断,这时Date构造出的时间就是。063)。
个人认为,SempleDateFormat对 .SSS 的处理有问题,不会把两位数字后面补零,就当他是两位数字处理。