003-mysql建表时自动生成时间
对于mysql创建的表时,一般需要添加create_time, 以及last_modify_time用来记录的创建时间,以及最后一次更新时间,对于last_modify_time要求每次记录修改都需要进行更新,如果放在代码端实现,将会非常麻烦,增加不必要的工作量,其实可以通过充分利用数据库提供功能进行实现。实现如下:
1、新增 create_time, last_modify_time 字段,类型选择 timestamp, 注意如果需要显示至毫秒的话,注意将长度设置为3或者直接使用timestamp(3)。
2、设置默认值为:CURRENT_TIMESTAMP。
3、如果用的是navicat 注意下面有一个 根据当前时间戳更新,如下所示:
对于create_time 不要勾选,对于last_modify_time勾选上。
该选项作用时,如果勾选这条记录每次保存,该字段都会更新。
sql语名如下:
CREATE TABLE `t_stud_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) DEFAULT NULL,
`user_mobile` varchar(255) DEFAULT NULL,
`create_time` timestamp(3) NULL DEFAULT current_timestamp(3),
`last_modify_time` timestamp(3) NULL DEFAULT current_timestamp(3) ON UPDATE current_timestamp(3),
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
附mysql关于时间戳与时间相互转换函数
-- 日期转换为时间戳
select UNIX_TIMESTAMP('2020-03-12 15:14:22');
-- 时间戳转换为日期
select FROM_UNIXTIME(1584026062);
附Java关于时间与时间戳的转换关系
public static void test2() {
try{
SimpleDateFormat sFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
String string = "2020-03-12 15:20:33 790";
long stramp = sFormat.parse(string).getTime();
System.out.println("--------" + string + ":" + stramp);
String time_date = sFormat.format(new Date(stramp));
System.out.println("--------" + stramp + ":" + time_date);
}catch(Exception e){
e.printStackTrace();
}
}
时间戳的基本原理为以1970-01-01为时间起点,当前时间所经历过的毫秒数,所以可以发现时间戳的后三位即为毫秒数,如果只需要精确到秒,需要除以1000即可,如果精确到分,则需要除以 60*1000, 依次类推到小时,天,分别为 60*60*1000, 24*60*60*1000,但是对于年月需要特列注意,月份天数,以及年份天数,需作特殊处理。