1. 使用Timestamp,则会在数据库里存储:2013-07-16 07:20:01。
在不同时区,显示的都是2013-07-16 07:20:01,但其实他们并不是同一时间了。2. 存储事件发生的时间毫秒值,在不同时区解析出来的时间表示不一样,但表达都是同一时间,能解决时区问题。我个人偏向于存储时间的毫秒值,但是在很多地方看到却都是存储Timestamp,讲数据库的视频里也大多是用Date,Timestamp。
当我们的程序有多国用户时,解决时区问题是必要的。你更喜欢哪一种方式呢?时区 Java Timestamp数据库

解决方案 »

  1.   

    1. 2013-07-16 07:20:01: 一眼看出时间,在程序里直接就是Date或者Timestamp了。
    2. 时间的毫秒值:一眼看不出时间,显示时需要相应的转换成Date或者Timestamp再使用。
      

  2.   

    一般用第一种吧,比较直观,若是含有多国用户取出来的时候用TimeZone转一下好了
    当然还得具体情况具体分析,反正暂时还没碰到存ms的
      

  3.   


    long ,原因加减算法简单。
      

  4.   

    TimeZone转的话是可以,但是需要知道保存的TimeZone是哪一个TimeZone,这样需要存储原始的TimeZone
      

  5.   

    直接存date,有时候你需要对某一天进行分组统计,如果你存的是毫秒就不好操作了,时区的问题除非你的产品是外网项目,不然基本上都是在一个时区里使用的
      

  6.   

    可以参考jira,公司内部不同地区的部门公用一套jira,会出现时区问题,但是jira里会有一个设置时区的地方,你显示的时间都是以这个时区为标准
      

  7.   

    用的是@Temporal(TemporalType.TIMESTAMP)的路过。
    这要看数据库是否支持对应的类型了。