Mysql时间类型处理

关于Mysql中时间的处理

最近在读<人类简史>,读第二遍。只有晚上睡觉之前读一点点,有时候觉得一天可以抽出一个专门的时间来看书了,效率应该能高不少。

另外分享个网址可以随心创作

这里有一个chrome插件,模拟下雨声音的。如果周围的环境比较吵得话,而你觉得音乐分心的话,可以安装Rainy这个插件,模拟下雨天的感觉,让自己浮躁的心沉淀一下。

Mysql中Date相关问题

Mysql中与时间类型相关的类型方式有datetimedatetimetimestamp四种方式,当然也可以通过varchar来存储,但是总归在进行排序或者搜索等的时候,字符方式用起来不是很方便。

这里总结下四中类型的区别:

  • Date类型,只包含日期部分,没有时间部分。以YYYY-MM-DD方式存储,对应java类型是java.sql.date
  • Time类型,只包含时间部分,没有日期部分。以HH:MM:SS格式存储,对应java类型是java.sql.time
  • DateTime类型,同时包含日期和时间部分。以YYYY-MM-DD HH:MM:SS方式存储,存储占8个字节。以实际格式存储,对应java类型是java.sql.timestamp,可以插入默认值now()
  • Timestamp类型,简单来说和Data类型相似。通过它你可以以当前操作的日期和时间自动的标记Insert和Update操作。如果一张表中有多个Timestamp列,只有第一个会被自动更新。存储占四个字节,时间范围比起Datatime来要小,同时存储与时区有关,对应的java类型是java.sql.Timestamp,可以插入默认值CURRENT_TIMESTAMP。具体细节可以搜索相关文章,这里就简单介绍一下.

我在实际中使用的是DateTime类型,因为客户端和服务器传递的都是Json格式的数据,这里就需要在客户端将Timestamp变为string,处理不好的话会报异常比如:

Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffff]

或者 Cannot format given object as a date

在这里我已经解决这两个问题了。

  1. Timestamp->String

    //可以通过toString方式
    Timestamp t= new Timestamp(System.currentTimeMillis());
    System.out.println(t.toString());
    //或者通过DateFormat
    Timestamp t = new Timestamp(System.currentTimeMillis());
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println(dateFormat.format(t));
    
  2. String->Timestamp

    //借助ValueOf()方法
    Timestamp timestamp = new Timestamp(System.currentTimeMillis());
    String dateTime = "2016-12-12 19:28:22";
    timestamp = Timestamp.valueOf(dateTime);
    

posted on 2016-12-12 20:28  kuiblog.com  阅读(398)  评论(0编辑  收藏  举报