时间戳和日期时间的转换
应用场景
用于获取当前的日期时间、时间戳,以及时间戳和日期时间的转换
# 1.获取当前日期时间
select now();
# 2.获取当前时间戳
select unix_timestamp();
# 3.时间戳转成日期时间
select from_unixtime(1888264330);
# 4.日期时间转成时间戳
select unix_timestamp('2023-07-11 00:00:00');
日期时间的加减计算
1. date_add()
说明:date_add():为当前日期增加一个时间间隔
用法:此函数可用于计算距离当前日期一个月之后的日期
语法格式:DATE_ADD(date,interval expr type)
date:指定的时间日期
interval:固定写法
expr:所增加的时间间隔
type:时间间隔的单位,包括:秒、分钟、小时、天、星期、月、季、年等
# 加1天
select now(),date_add(now(), interval 1 day);
# 加1小时
select now(),date_add(now(), interval 1 hour);
# 加1分钟
select now(),date_add(now(), interval 1 minute );
# 加1秒
select now(),date_add(now(), interval 1 second );
# 加1周
select now(),date_add(now(), interval 1 week);
# 加1个月
select now(),date_add(now(), interval 1 month);
# 加1季度
select now(),date_add(now(), interval 1 quarter );
# 加1年
select now(),date_add(now(), interval 1 year );
2. date_sub()
说明:date_sub():为当前日期减去一个时间间隔
用法:此函数可用于计算距离当前日期一个月之前的日期
语法格式:DATE_SUB(date,interval expr type)
date:指定的时间日期
interval:固定写法
expr:所减去的时间间隔
type:时间间隔的单位,包括:秒、分钟、小时、天、星期、月、季、年等
# 减1天
select date_sub(now(), interval 1 day);
# 减1小时
select date_sub(now(), interval 1 hour);
# 减1分钟
select now(),date_sub(now(), interval 1 minute );
# 减1秒
select now(),date_sub(now(), interval 1 second );
# 减1周
select now(),date_sub(now(), interval 1 week);
# 减1个月
select now(),date_sub(now(), interval 1 month);
# 减1季度
select now(),date_sub(now(), interval 1 quarter );
# 减1年
select now(),date_sub(now(), interval 1 year );
两个日期时间的间隔计算
方式一
内置函数:TimeStampDiff(间隔类型,前一个日期,后一个日期);
间隔类型:second:秒,minute:分钟,hour:小时,day:天,week:周,month:月,quarter:季度,year:年
前一个日期:日期时间格式
后一个日期:日期时间格式
应用场景:用于计算两个日期时间的间隔时间
# 计算间隔的秒
select timestampdiff(second , '2023-07-11 00:00:00',now());
# 另外可用函数sec_to_time()将秒换算成:时:分:秒格式
select sec_to_time(1500);
#计算间隔的分钟
select timestampdiff(minute , '2023-07-11 00:00:00',now());
# 计算间隔的小时
select timestampdiff(hour , '2023-07-11 00:00:00',now());
# 计算间隔的天
select timestampdiff(day, '2023-07-11 00:00:00',now());
# 另外可通过两个日期的时间戳相减,得到间隔的时间戳形式
select unix_timestamp()- unix_timestamp('2023-07-11');
方式二
应用场景:直接将两个日期时间相减,得到的间隔时间为:XX天XX小时XX分钟XX秒
# 将时间间隔换算成XX天XX小时XX分钟XX秒
# 1.通过timestampdiff()函数计算两个日期所间隔的秒数
# 2.然后通过floor(): 返回一个小于或等于X的最大整数,向下取整
# 3.在使用convert()函数分别将秒数换算成:天、小时、分钟、秒,得到结果
select
convert(floor(timestampdiff(second , '2023-07-11 00:00:00', now())/(3600*24)),char) '天',
convert(floor(timestampdiff(second , '2023-07-11', now())%(3600*24)/3600),char) '小时',
convert(floor(timestampdiff(second , '2023-07-11', now())%3600/60),char) '分',
convert(timestampdiff(second , '2023-07-11', now())%60,char) '秒';