关于Postgre中的Timestamp(时间戳)格式。

 

 

 

          前一段时间练习时候的一个知识点,今天总结一下:

 

       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  的处理有问题,不会把两位数字后面补零,就当他是两位数字处理。

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值