mysql时间相关函数

article/2025/8/25 21:52:07

mysql数据库

1、获取当前时间 

 select now()    -- 获取当前具体的日期和时间 2022-05-07 16:07:39
select curdate()    -- 获取当前日期 2022-05-07
select curtime()       -- 获取当前时间 16:08:44     

select current_timestamp() -- 获取当前具体的日期和时间2022-05-07 16:07:39

2、MySQL加减某个时间间隔         

 2.1 设置当前日期变量   

set @dt = now()    -- 设置变量获取当前日期
select @dt    -- 查询变量值   

                                                                                                        

2.2 加减某个时间间隔函数date_add()与date_sub()

MySQL adddate(), addtime()函数,可以用date_add() 来替代。

此外,MySQL 为日期减去一个时间间隔:date_sub()
MySQL date_sub() 日期时间函数 和date_add() 用法一致。
MySQL 中subdate(),subtime()函数,建议用date_sub()来替代。

date_add('某个日期时间',interval 1 时间种类名);

year:年,quarter:季,month:月,week:周,day:天,hour:小时,minuter:分钟,second:秒,microsecond:毫秒

示例:

select date_add(now(), interval 1 year);    //加1年

select date_add(now(), interval 1 hour); -- 加1小时

select date_add('2022-05-07',interval 1 day);   -- 加1天

 3、日期相减

datediff(date1,date2):两个日期相减,date1减去date2得到相减之后的天数,精确到天

timediff(time1,time2):两个时间相减 time1减time2,返回差值时间,精确到了秒

timestampdiff(unit,datetime_expr1,datetime_expr2)  返回差值unit,精确到了秒

注:unit为相差的单位year,month,week,day

datediff(date1,date2):两个日期相减,date1减去date2得到相减之后的天数,精确到unit

select datediff('20191010','20191001')    

select create_time,update_time,datediff(create_time,update_time) from tables    -- 计算相差的天数

timediff(time1,time2):两个时间相减 time1减time2,返回差值时间,精确到了秒

 select create_time,update_time,timediff(create_time,update_time) from tables   -- 计算相差的时间

timestampdiff(unit,datetime_expr1,datetime_expr2)  返回差值unit,精确到了unit

 select create_time,update_time,timestampdiff(year,create_time,update_time) from tables

 select create_time,update_time,timestampdiff(month,create_time,update_time) from tables

 select create_time,update_time,timestampdiff(week,create_time,update_time) from tables

 select create_time,update_time,timestampdiff(day,create_time,update_time) from tables 

 select create_time,update_time,TO_DAYS(create_time)-TO_DAYS(update_time) from tables

4、日期和字符相互转换方法
date_format(date,’%Y-%m-%d’)    将时间类型的日期转换成str类型的日期
str_to_date(date,’%Y-%m-%d’)     将str类型的日期转换成时间类型的日期

%Y:代表4位的年份
%y:代表2位的年份

%m:代表月, 格式为(01,02……12)
%c:代表月, 格式为(1,2……12)

%d:代表月份中的天数,格式为(00,01……31)
%e:代表月份中的天数, 格式为(0,1……31)

%H:代表小时,格式为(00,01……23)
%k:代表 小时,格式为(0,1……23)
%h: 代表小时,格式为(01……12)
%I: 代表小时,格式为(01……12)
%l :代表小时,格式为(1……12)

%i: 代表分钟, 格式为(00……59)

%r:代表 时间,格式为12 小时(hh:mm:ss [AP]M)
%T:代表 时间,格式为24 小时(hh:mm:ss)

%S:代表 秒,格式为(00……59)
%s:代表 秒,格式为(00……59)

SELECT DATE_FORMAT(20130111191640,’%Y-%m-%d %H:%i:%s’)

 5、int时间类型转为datetime类型

select from_unixtime(1506059685,format)     将int类型的时间转换成datetime类型时间,format格式可不加,则为默认的时间格式

select  unix_timestamp('2022-05-08 15:40:09')   将时间转换成int类型的时间

select  from_unixtime(1651907596)  -- 将int类型的时间转换成date类型的时间

select  from_unixtime(1651907596,'%Y%m%d %H%i%s')  -- 将int类型的时间转换成date类型的时间

 select unix_timestamp(now())  -- 将date类型的时间转换成int类型的时间

 6、时间类型
mysql有五⼤时间类型:
1. datetime 可以存储年⽉⽇时分秒类型的时间,如果在设计字段的时候可以设置获取当前时间,插⼊数据的时候,如果没有对该赋值,mysql会⾃动获取当前的时间填充
2. timestamp 可以存储年⽉⽇时分秒类型的时间,跟 datetime ⼀样,也可以存储时间戳,timestamp 的精度是14位,存储也是14位,但是如果设置了⾃⼰需要的精度,那么 mysql 会将14位处理成设置的精度进⾏显⽰,底层储仍然是14位精度。timestamp有⼀个⽐较有趣的字段,受当前时趣的字段,受当前时区的影响。如果某条记录的字段被修改(不包括datestamp字段),那么 datestamp 字段可以⾃动更新为数据修改的时间,所以也可以⽤来代替 updated_time 字段(我习惯⽤ updated_time 字段名来记录某条数据被修改的时间,⽅便查看)

在创建新记录和修改某条记录的时候都对该类型的字段更新为当前时间:
      TIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP
在创建新记录的时候把这个类型的字段设置为当前时间,当以后修改的时候,不再更新:
      TIMESTAMPDEFAULTCURRENT_TIMESTAMP
在创建新记录的时候把这个字段设置为0,以后修改的时候更新该字段:
      TIMESTAMPONUPDATECURRENT_TIMESTAMP
在创建新记录的时候把这个类型的字段字段设置为给定值,以后修改的时候也会更新该字段:
      TIMESTAMPDEFAULT 'yyyy-mm-dd hh:mm:ss' ONUPDATECURRENT_TIMESTAMP

 3. date 可以存储年⽉⽇时间
4. time 可以存储时分秒时间
5. year 可以存储年份


7、时间⽐较
java中的常⽤的 Date 类本⾝提供了 before, after⽅法⽐较时间的先后,mysql中时间的⽐较灵活,可以直接使⽤ <、>、= 进⾏⽐较,适应所有时间字段,但是格式需要相同,也可以使⽤ between and 来进⾏⽐较。
还有⼀个⽐较灵活的,之前⼯作中,有这么个场景,有⼀个时间字段在 java 是String 类型,需要作为参数到 sql 语句中和时间类型的字段⽐较,⼀般我都是使⽤ MySQL ⾃带的 str_to_date(str, format) 函数将字符串先转化为时间类型再⽐较,后来发现其实时间类型的字段可以和字符串类型的字段直接进⾏⽐较,不⽤转为相同类型,省去了转化的时间,当然时间格式也要⼀样。

timetest的表结构:

timestamp类型的时间⽐较
select * from timetest t where t.timestamptest='2022-05-08 15:39:53'


datetime类型的时间⽐较
select * from timetest t where t.datetimetest ='2022-05-08 15:39:53'


time类型的时间⽐较
select * from timetest t where t.timetest='15:39:53'


date类型的时间⽐较
select * from timetest t where t.datetest='2022-05-08'


year类型的时间⽐较
select * from timetest t where t.yeartest='2022'


http://chatgpt.dhexx.cn/article/khe7e02c.shtml

相关文章

MySQL常用的日期时间函数

目录 1.日期(date)函数 2.时间(time)函数 3.日期和时间函数 4.日期和时间比较 5.日期和时间运算 6.日期和时间的格式化 1.日期(date)函数 返回当前日期&#xff1a;CURDATE(), CURRENT_DATE(), CURRENT_DATE 2.时间(time)函数 返回当前时间&#xff1a;CURTIME(), CURR…

Mysql 中的日期时间函数汇总

日期和时间函数 MySQL中内置了大量的日期和时间函数&#xff0c;能够灵活、方便地处理日期和时间数据&#xff0c;本节就简单介绍一下MySQL中内置的日期和时间函数。 1 CURDATE()函数 CURDATE()函数用于返回当前日期&#xff0c;只包含年、月、日部分&#xff0c;格式为YYYY-M…

通过apizza生成python接口测试代码

1、先选择需要生成代码的接口 2、点击 “代码” --选择生成对应的python接口测试代码

谷歌浏览器安装apizza

接口测试是卡发中不可缺少的一环&#xff0c;那么常用的postman是英文就很不方便一些小伙伴的使用&#xff0c;所以此工具和postman功能相同且升级并且是中文模式 安装&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1mWkD-TJNOtPds2MpCc6G9Q 提取码&#xff1a;lfrm …

Apizza 使用方法

首先下载插件&#xff0c;然后安装到谷歌浏览器上 1下载插件 官方下载地址&#xff1a;http://apizza.cc/page/downloadext 下载本地安装包&#xff0c;解压后&#xff0c;打开Chrome浏览者扩展程序 安装插件成功。 2.使用apizza 如果你要新建项目&#xff0c;则点击新建项目&a…

Apizza在线接口调试文档工具如何方便添加测试用例

1. 什么是测试用例 当您测试完后需要将API参数保留&#xff0c;针对各个不同环境进行测试。同时我们需要在一个API中测试多种情况。我们不需要再填写API参数。 2. 保存测试用例 API测试完成后&#xff0c;我们可以把请求参数另存为测试用例&#xff0c;点击「保存」后&#…

Apizza用法简介-Http请求模拟工具

摘要: Apizza 是国内领先的在线API saas 管理平台,支持在线的API调试,接口管理,快速生成文档,项目管理以及分享。 Apizza (http://apizza.cc?f=bl) 平台分为开发模式和浏览模板,开发模式只有用户自己可以打开,浏览模式是供其他人查看,测试使用。 平台支持标准的http协议…

Apizza-使用 Mock API 生成接口返回数据

使用 Mock API 1. 什么是Mock API 通过 Mock API事先编写好 API 的数据生成规则&#xff0c;由工具动态生成 API 的返回数据。开发人员通过访问 Mock API 来获得页面所需要的数据&#xff0c;就可以轻松地完成对接工作。前后端人员只需要定义好接口文档就可以开始并行工作&am…

【工具使用】apizza和postman中post请求下form-data、x-www-form-urlencoded、raw、binary的区别

众所周知请求是可以带参数的&#xff0c; 其实form-data、x-www-form-urlencoded、raw、binary就是发送什么格式的参数而已&#xff0c;没那么神秘 1、form-data: 就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息&#xff0c;以标签为单元&#xff0c;…

Swagger2+Apizza接口文档

Swagger2的使用 // 这个是基于Springboot环境 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version> </dependency> <dependency><groupId>io.sp…

Apizza-响应json数据上设置浮动注释

浮动注释 1. 什么是浮动注释&#xff1f; 为了便于用户更直观的注释响应参数&#xff0c;我们可以直接在json上进行注释。同时和「返回数据模型」配套使用&#xff0c;会极大的减少工作量。 2. 如何使用浮动注释&#xff1f; 在「开发模式」下&#xff0c;切换到文档&#…

apizza开发工具

http://apizza.cc 摘要: Apizza 是国内领先的在线API saas 管理平台&#xff0c;支持在线的API调试&#xff0c;接口管理&#xff0c;快速生成文档&#xff0c;项目管理以及分享。 Apizza (http://apizza.cc?fbl) 平台分为开发模式和浏览模板&#xff0c;开发模式只有用户自己…

Apizza-绑定数据模型

数据模型 1. 什么是数据模型&#xff1f; 我们可以在开发前&#xff0c;先将响应对象&#xff0c;请求参数定义好&#xff0c;便于在编辑文档中进行绑定&#xff0c;一处定义&#xff0c;全局使用。极大提高了程序猿们的开发效率。 数据模型 请求参数模型&#xff1a;主要用…

Apizza-流程测试模式

如何使用流程测试模式 1. 什么是流程测试&#xff1f; 流程测试是针对一个接口集合的测试&#xff0c;选择相应的环境&#xff0c;可以作为一系列请求一起运行。 当您想要自动化API测试时&#xff0c;流程测试非常有用。 点击开始&#xff0c;接口集合会并发的像服务器发出…

Apizza--特别好用的 Http请求模拟工具 PHP写接口然后测试详细教程

大家好,我是DK! 今天是写接口的全套教程&#xff01;大体说一下思路 。 首先下载插件&#xff0c;然后安装到谷歌浏览器上&#xff0c;然后呢写一个接口&#xff0c;之后进行测试&#xff0c;最后生成文档 1下载插件 官方下载地址&#xff1a;http://apizza.cc/page/do…

Apizza-怎样使用动态表达式

动态表达式 当你发送API请求时&#xff0c;需要动态的参数&#xff0c;比如当前的时间&#xff0c;md5等预处理。你可以使用动态表达式功能。 1. 在发送请求的时候&#xff0c;点击「fx」按钮 表达式构造器界面 2. 通过快捷方式编写表达式脚本 特别注意&#xff1a;该功能是通…

php api 在线编辑导出,api在线管理,调试,文档生成工具之Apizza

摘要: Apizza (http://apizza.cc?fbl) 是国内领先的在线API saas 管理平台&#xff0c;支持在线的API调试&#xff0c;接口管理&#xff0c;快速生成文档&#xff0c;项目管理以及分享。 平台分为开发模式和浏览模板&#xff0c;开发模式只有用户自己可以打开&#xff0c;浏览…

Apizza在线接口调试文档工具如何方便的设置线上线下环境变量

什么是环境变量 &#xff1f; 当你有多个开发环境以及生产环境&#xff0c;你不用修改文档&#xff0c;一键切换到任意环境 例&#xff1a;你可以配置线上或者线下环境的变量值。在URL中引用方式变量名。 线上环境&#xff1a;host 对应 apizza.net 请求URL&#xff1a;http:/…

Apizza在线接口工具动态绑定API参数依赖

动态绑定&#xff08;API参数依赖&#xff09; 接口参数依赖又称作接口依赖&#xff0c;简单点说就是后面的接口要用到前面的接口产生的数据。 比如&#xff1a; A接口请求数据接口需要B接口登录接口返回的参数token作为自己的请求参数。 常见的场景&#xff1a;访问一个需…