hibernate使用mysql中时间的数据类型

MySQL 日期类型:日期格式、所占存储空间、日期范围 比较。
日期类型        存储空间       日期格式                 日期范围
------------ ---------   --------------------- -----------------------------------------
datetime       8 bytes   YYYY-MM-DD HH:MM:SS   1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp      4 bytes   YYYY-MM-DD HH:MM:SS  1970-01-01 00:00:01 ~ 2038
date           3 bytes   YYYY-MM-DD           1000-01-01          ~ 9999-12-31
year           1 bytes   YYYY                   1901                ~ 2155

在 MySQL 中创建表时,对照上面的表格,很容易就能选择到合适自己的数据类型。但是选择 datetime 还是 timestamp,可能会有点犯难。这两个日期时间类型各有优点:datetime 的日期范围比较大;timestamp 所占存储空间比较小,只是 datetime 的一半。另外,timestamp 类型的列还有个特性:默认情况下,在 insert, update 数据时,timestamp 列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。“自动”的意思就是,你不去管它,MySQL 会替你去处理。 


1、date类型

可以在hibernate中对应String数据类型(个人愚见)

2、datetime类型我一般不会选timestamp 类型它对应的存储空间较小

package com.model;
// default package

import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * 数据库表datetime的实体类
 * @author 王校兵
 * @version 1.0,2015-11-26
 */
@Entity
@Table(name = "datetime", catalog = "hibernatedemo")
public class Datetime implements java.io.Serializable {

	// Fields

	private Integer did;
	private Timestamp timedatetime;

	// Constructors

	/** default constructor */
	public Datetime() {
	}

	/** full constructor */
	public Datetime(Timestamp timedatetime) {
		this.timedatetime = timedatetime;
	}

	// Property accessors
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "did", unique = true, nullable = false)
	public Integer getDid() {
		return this.did;
	}

	public void setDid(Integer did) {
		this.did = did;
	}

	@Column(name = "timedatetime", nullable = false, length = 19)
	public Timestamp getTimedatetime() {
		return this.timedatetime;
	}

	public void setTimedatetime(Timestamp timedatetime) {
		this.timedatetime = timedatetime;
	}

}
对应的Java测试类
<pre name="code" class="java">package com.dao;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.model.Datetime;
import com.model.Time;
import com.util.HibernateSessionFactory;

/**
 * 向数据库中插入数据datetime类型插入测试
 * @author 王校兵
 * @version 1.0,2015-11-26
 * */
public class InsertDateTimeDao {

	public static void main(String[] args) {
		
		//当前时间时间戳
		/*Timestamp t = new Timestamp(System.currentTimeMillis());
		System.out.println("Timestamp----   " + t);*/
		
		//自己创建时间戳
		Timestamp t = Timestamp.valueOf("2015-1-26 19:23:18.575"); 
		System.out.println("Timestamp.valueOf(2015-11-26 19:53:18.575)--    " + t);
		
		Session session = HibernateSessionFactory.getSession();
		Transaction ts = session.beginTransaction();
		
		Datetime dt = new Datetime();
		dt.setTimedatetime(t);
		
		session.save(dt);
		
		org.hibernate.Query query = session.createQuery("from Datetime");
		List list = query.list();
		ts.commit();
		HibernateSessionFactory.closeSession();
		
		for(Object ele:list){
			Datetime d = (Datetime)ele;
			System.out.println(d.getTimedatetime());
		}
	}

}


 
3、year个人感觉还不如String类型好使(个人愚见)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值