tags: [mysql]
    categories: 技术


    在MySQL中对于时间的存储自己见表的时候都是设置的varchar类型的,感觉挺方便的。
    昨天拿别人建好的表写代码,发现这张表中时间类型为datetime的,凭感觉试了一下不行,网上查了刚开始试了好几个都是不对的,一脸懵逼。


    Mysql 中对 date datetime time timestamp 区别 - 图1

    如图,mysql中的datetime类型数据对应的是Java中的Timestamp类。
    date:只有日期,没有时间,2016-09-21;
    time:只有时间,没有日期,23:42:31;
    datetime:日期时间都有,2016-09-21 23:42:31 。
    timestamp:可以在进行Insert或者update的时候自动的为你插入时间,时间格式:2016-09-21 23:42:31。

    用navicat找了一张表添加了一个timestamp的字段,如下:
    Mysql 中对 date datetime time timestamp 区别 - 图2

    导出表结构看到该字段sql为:time_test timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,

    言归正传,本次数据库中用的是datetime类型的,在java中生成可以存储的时间数据方法如下:

    1. Date date = new Date();
    2. Timestamp timeStamep = new Timestamp(date.getTime());
    3. System.out.println(timeStamep);
    4. //输出结果: 2016-09-22 10:38:14.964