MySQL数据库时间计算的用法

今天给大家分享如何通过MySQL内置函数实现时间的转换和计算,在工作当中,测试人员经常需要查询数据库表的日期时间,但发现开发人员存入数据库表的形式都是时间戳形式,不利于测试人员查看,测试人员只能利用工具对时间戳进行转换,才能直观查看。但这样会增加测试人员的效率,那么可巧妙的使用MySQL内置函数,便可以轻松解决这个问题,以及通过内置函数对时间进行加减计算,便可以提高工作的效率。

(一)时间戳和日期时间的转换

应用场景

用于获取当前的日期时间、时间戳,以及时间戳和日期时间的转换

# 1.获取当前日期时间
select now();
 
# 2.获取当前时间戳
select unix_timestamp();
 
# 3.时间戳转成日期时间
select from_unixtime(1688264330);
 
# 4.日期时间转成时间戳
select unix_timestamp('2023-07-02 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 );
  1. 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-05 00:00:00',now());
 
# 另外可用函数sec_to_time()将秒换算成:时:分:秒格式
select sec_to_time(1500);
 
#计算间隔的分钟
select timestampdiff(minute , '2023-07-05 00:00:00',now());
 
# 计算间隔的小时
select timestampdiff(hour , '2023-07-05 00:00:00',now());
 
# 计算间隔的天
select timestampdiff(day, '2023-07-05 00:00:00',now());
 
# 另外可通过两个日期的时间戳相减,得到间隔的时间戳形式
select unix_timestamp()- unix_timestamp('2023-07-05');

方式二

应用场景:直接将两个日期时间相减,得到的间隔时间为:XX天XX小时XX分钟XX秒

# 将时间间隔换算成XX天XX小时XX分钟XX秒
# 1.通过timestampdiff()函数计算两个日期所间隔的秒数
# 2.然后通过floor(): 返回一个小于或等于X的最大整数,向下取整
# 3.在使用convert()函数分别将秒数换算成:天、小时、分钟、秒,得到结果
 
select
    convert(floor(timestampdiff(second , '2023-07-05 00:00:00', now())/(3600*24)),char) '天',
    convert(floor(timestampdiff(second , '2023-07-05', now())%(3600*24)/3600),char) '小时',
    convert(floor(timestampdiff(second , '2023-07-05', now())%3600/60),char) '分',
    convert(timestampdiff(second , '2023-07-05', now())%60,char) '秒';

查询结果

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

相关推荐
飞翔的佩奇7 分钟前
xxl-job适配sqlite本地数据库及mysql数据库。可根据配置指定使用哪种数据库。
数据库·spring boot·mysql·sqlite·xxl-job·任务调度
吱吱鼠叔38 分钟前
MATLAB数据文件读写:1.格式化读写文件
前端·数据库·matlab
小哇66641 分钟前
spring-TransactionTemplate 编程式事务
数据库·spring
如意机反光镜裸1 小时前
CentOS7安装MySQL教程
数据库·mysql
冰镇毛衣1 小时前
1.4 MySql配置文件
数据库·mysql
攻城狮的梦1 小时前
redis集群模式连接
数据库·redis·缓存
标贝科技2 小时前
ChatGPT对话训练数据采集渠道有哪些
数据库·人工智能·机器学习·chatgpt
计算机学姐2 小时前
基于python+django+vue的影视推荐系统
开发语言·vue.js·后端·python·mysql·django·intellij-idea
乌啼霜满天2492 小时前
如何将MySQL卸载干净(win11)
数据库·mysql
2的n次方_2 小时前
掌握Spring Boot数据库集成:用JPA和Hibernate构建高效数据交互与版本控制
数据库·spring boot·hibernate