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) '秒';

查询结果

总结:

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

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

软件测试面试文档

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

相关推荐
Karoku06612 分钟前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
小技与小术1 小时前
数据库表设计范式
数据库·mysql
安迁岚1 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql
安迁岚1 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器
数据库·sql·mysql·oracle·实验报告
Loganer1 小时前
MongoDB分片集群搭建
数据库·mongodb
LKID体2 小时前
Python操作neo4j库py2neo使用之创建和查询(二)
数据库·python·neo4j
刘大浪2 小时前
后端数据增删改查基于Springboot+mybatis mysql 时间根据当时时间自动填充,数据库连接查询不一致,mysql数据库连接不好用
数据库·spring boot·mybatis
一只爱撸猫的程序猿2 小时前
简单实现一个系统升级过程中的数据平滑迁移的场景实例
数据库·spring boot·程序员
无敌岩雀2 小时前
MySQL中的索引
数据库·mysql
a_安徒生2 小时前
linux安装TDengine
linux·数据库·tdengine