1、我需要一个精确到毫秒的时间记录在MySql数据库中。数据库中用哪一种数据类型呢?(Date,DateTime,Time,Timestamp)这几种类型有什么区别呢?
2、我通过Hibernate Tools生产到实体java,我数据库中字段设置为DateTime或者Timestamp,生成出来的java类型都是Date.为什么呢?这样会对精度有影响吗?
3、我想记录当前时间进入数据库,我需要程序生成的时间,不用数据库内置的函数。我用Date now = new Date();来生成。但是我在数据库查看是只能精确到秒。如何生成精度更高的当前时间呢?
4、假如我能生成精确到毫秒的时间,我如果格式转换?是否直接用now.toString();就可以全部信息都显示呢?格式没有特别的要求,只有能显示到毫秒就可以了。
2、我通过Hibernate Tools生产到实体java,我数据库中字段设置为DateTime或者Timestamp,生成出来的java类型都是Date.为什么呢?这样会对精度有影响吗?
3、我想记录当前时间进入数据库,我需要程序生成的时间,不用数据库内置的函数。我用Date now = new Date();来生成。但是我在数据库查看是只能精确到秒。如何生成精度更高的当前时间呢?
4、假如我能生成精确到毫秒的时间,我如果格式转换?是否直接用now.toString();就可以全部信息都显示呢?格式没有特别的要求,只有能显示到毫秒就可以了。
楼主【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.java里面统一使用Date进行处理,没有影响
3.类Date是可以精确到毫秒的,你在存入数据库时需要指定
4.通过Calendar.getTimeInMillis() 可以获得毫秒时间,将date转换成Calendar
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);
这样保存到数据库的。如何设定精度。
Time 时间
DateTime 日期加时间
Timestamp 时间戳
MYSQL里TIMESTAMP是精确到秒的
那MySql中那个时间数据类型可以精确到毫秒呢?
首先不能肯定你所用的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精度能达到毫秒
就是数据库的精度不够的问题。
现在用MySql中的BigInt来存储时间。
经过Hibernate Tools生成实体的类型是long,
这样就可以
Date now = new Date();
now.getTime();
获得时间然后存储在数据库中。
取出的时候再转换成Date类型。