关于Mysql中时间的处理
最近在读<人类简史>,读第二遍。只有晚上睡觉之前读一点点,有时候觉得一天可以抽出一个专门的时间来看书了,效率应该能高不少。
另外分享个网址可以随心创作
这里有一个chrome插件,模拟下雨声音的。如果周围的环境比较吵得话,而你觉得音乐分心的话,可以安装Rainy
这个插件,模拟下雨天的感觉,让自己浮躁的心沉淀一下。
Mysql中Date相关问题
在Mysql
中与时间类型相关的类型方式有date
、time
、datetime
和timestamp
四种方式,当然也可以通过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
在这里我已经解决这两个问题了。
-
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)); -
String->Timestamp
//借助ValueOf()方法
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
String dateTime = "2016-12-12 19:28:22";
timestamp = Timestamp.valueOf(dateTime);