一.常用的时间格式化
有时候从数据库取出的 Date 时间格式,会变成时间戳形式,这时候需要进行转换,比较常用的是
1. 在 java 中格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date;
date = sdf.parse((String) param.get("date"));
或者使用 String.format()方法 :
String date = String.format("%1$tF %1$tT", new Date());
显然这种方式需要一个个进行转换,效率低下
2.利用 FROM_UNIXTIME() 和 UNIX_TIMESTAMP() 函数
FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y-%m-%d %H:%i:%s') date,
将这段语句放在Date字段前,但这种方法有个弊端,就是如果数据库中的时间单位为null的话,会自动给查询生成一个当前时间
3.利用 DATE_FORMAT() 函数
DATE_FORMAT(date,'%Y-%m-%d %H:%i:%s') as a,
再给这个字段值赋个别名,可以很顺利取出想要的时间格式
二.Mysql中常见的时间类型
1.Date
Date类型只会存储 年月日,不会存储时间部分,存储时需要三个字节。
可以使用 current_date 查看当前日期:
select current_date;
2.Datetime
Datetime 类型使用8个字节来表示日期和时间。
时间范围从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59',且和时区无关,怎么存就怎么取。
3.timestamp
timestamp类型使用4个字节来表示日期和时间。
时间为UTC时间,范围从 '1970-01-01 00:00:01' 到 '2038-01-19 03:14:07',且和时区有关,例如在东八区插入'2020-06-15 12:30:30',在东七区显示时,时间部门就变成了'2020-06-15 11:30:30'.
注:时间类型尽量选取 timestamp 。因为 datetime 占用8字节, timestamp 仅占用4字节,但是范围
为 1970-01-01 00:00:01 到 2038-01-01 00:00:00 。更为高阶的方法,选用 int 来存储时间,使用SQL函 数 unix_timestamp() 和 from_unixtime() 来进行转换。
三.Mysql 中查看当前时间
select current_date;
SELECT CURRENT_TIMESTAMP;
SELECT CURRENT_TIMESTAMP();
SELECT NOW();
SELECT LOCALTIME;
SELECT LOCALTIME();
SELECT LOCALTIMESTAMP;
SELECT LOCALTIMESTAMP();
四.Mysql对时间进行增加或减少
可以利用 INTERVAL
加一天:
select NOW() + INTERVAL 1 DAY;
减一天:
select NOW() - INTERVAL 1 DAY;
加 30 分钟:
select NOW() + INTERVAL 30 MINUTE;
减 30 分钟:
select NOW() - INTERVAL 30 MINUTE;