1、我需要一个精确到毫秒的时间记录在MySql数据库中。数据库中用哪一种数据类型呢?(Date,DateTime,Time,Timestamp)这几种类型有什么区别呢?
2、我通过Hibernate Tools生产到实体java,我数据库中字段设置为DateTime或者Timestamp,生成出来的java类型都是Date.为什么呢?这样会对精度有影响吗?
3、我想记录当前时间进入数据库,我需要程序生成的时间,不用数据库内置的函数。我用Date now = new Date();来生成。但是我在数据库查看是只能精确到秒。如何生成精度更高的当前时间呢?
4、假如我能生成精确到毫秒的时间,我如果格式转换?是否直接用now.toString();就可以全部信息都显示呢?格式没有特别的要求,只有能显示到毫秒就可以了。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【mikesu】截止到2008-07-18 11:03:44的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:25                       得分贴总数量:11                       回帖的得分率:44%                      
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    1.Timestamp
    2.java里面统一使用Date进行处理,没有影响
    3.类Date是可以精确到毫秒的,你在存入数据库时需要指定
    4.通过Calendar.getTimeInMillis() 可以获得毫秒时间,将date转换成Calendar
      

  3.   

    楼上讲的好 但Date,DateTime,Time,Timestamp有什么区别  能再讲一下不学习啦
      

  4.   


    2、是用java.util.Date还是java.sql.Date?
    3、如何指定?例如我有一个实体:@Entity
    @Table(name = "log")
    public class Log implements java.io.Serializable {   private String id;
       private Date time; @Id
    @GeneratedValue(generator="hibernate-uuid")
    @GenericGenerator(name="hibernate-uuid",strategy="uuid.hex")
    @Column(name = "id", unique = true, nullable = false, length = 32)
    public String getId() {
    return this.id;
    } public void setId(String id) {
    this.id = id;
    } @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "time", nullable = false, length = 19)
    public Date getTime() {
    return this.time;
    } public void setTime(Date time) {
    this.time = time;
    }}
    Log log = new Log();
    log.setTime(new Date());
    dao.save(log);
     
    这样保存到数据库的。如何设定精度。
      

  5.   

    Date 日期
    Time 时间
    DateTime 日期加时间
    Timestamp 时间戳
      

  6.   

    现在都推荐使用java.util.Date了。
      

  7.   

    LZ说的是MYSQL数据库
    MYSQL里TIMESTAMP是精确到秒的
      

  8.   


    那MySql中那个时间数据类型可以精确到毫秒呢?
      

  9.   

    时间精确度问题,涉及到几个方面,包括硬件、操作系统、JVM、数据库
    首先不能肯定你所用的JVM和操作系统平台能否支持精确到毫秒。
    假设你的JVM能支持到毫秒,MySql数据库你提到的几个和时间相关的字段类型,精度只到秒。
    如果你想用MqSql保存一个精度到毫秒的值,只能用java.util.Date.getTime()得到一个精度到毫秒的long型数据,把这个long型数据保存在数据库中。1、我需要一个精确到毫秒的时间记录在MySql数据库中。数据库中用哪一种数据类型呢?(Date,DateTime,Time,Timestamp)这几种类型有什么区别呢?
    Date精度只到日,DateTime,日期时间,精度到秒,Time只有时间没有日期,Timestamp时间戳,精度到秒,timestamp可以由数据库自己插入
    具体的区别可以参考mysql手册。
     
    2、我通过Hibernate Tools生产到实体java,我数据库中字段设置为DateTime或者Timestamp,生成出来的java类型都是Date.为什么呢?这样会对精度有影响吗?
    java.util.Date是表示时间的通用数据类型,数据库中的类型Date都可以表示。对精度也没有影响。Date具体精度依赖JVM等等,如果是从数据库中得到的值,精度依赖于数据库
     
    3、我想记录当前时间进入数据库,我需要程序生成的时间,不用数据库内置的函数。我用Date now = new Date();来生成。但是我在数据库查看是只能精确到秒。如何生成精度更高的当前时间呢? 
    System.currentTimeMillis();可以得到系统的毫秒,但是前面说了,精度还是依赖于操作系统平台,绝大多数都无法达到毫秒,可能的精度是几十个毫秒。你可以把这个数据存入数据库,这个long值可以很方面的转为Date类型。
    Date date = new Date();
    date.setTime(xxx);
    xxx就是你从数据库中取得的long值。4、假如我能生成精确到毫秒的时间,我如果格式转换?是否直接用now.toString();就可以全部信息都显示呢?格式没有特别的要求,只有能显示到毫秒就可以了。
    格式转换用java.text.SimpleDateFormat,如yyyy-MM-dd HH:mm:ss.SSS就可以转换得到一个到毫秒的Date字符串,前提是你的Date精度能达到毫秒
      

  10.   

    问题得到了完美的解决。
    就是数据库的精度不够的问题。
    现在用MySql中的BigInt来存储时间。
    经过Hibernate Tools生成实体的类型是long,
    这样就可以
    Date now = new Date();
    now.getTime();
    获得时间然后存储在数据库中。
    取出的时候再转换成Date类型。