mysql时间相关函数
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'
mysql时间相关函数相关推荐
- mysql时间相关函数和操作
mysql时间操作是一个高频操作,我认为基于时间的操作的重要性不亚于统计函数. `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, ...
- mysql关于时间的面试题,mysql时间设置默认值MySQL常见面试题
1.limit(选出10 到20 条) select * from students order by id limit 9,10; 2.MySQL 会使用索引的操作符号 =,>,=,betwe ...
- MySQL时间慢了八个小时
由于我公司另外一个运维小伙伴装系统的时候,勾选了UTC这个东东.(会导致慢八个小时的时间误差)结果才有了这一次逗比的经历. 1.系统时间慢八个小时,我发现不对劲后,就改回来了,可参考我的另外一篇博客. ...
- MySQL时间增加、字符串拼接
MySQL时间增加.字符串拼接 SELECT DATE_ADD(startTime, INTERVAL 10 SECOND); CONCAT(string1,string2,-) 转载于:https ...
- mysql 本周函数_【转】MySQL时间函数的使用:查询本周、下周、本月、下个月份的数据...
MySQL时间函数的使用:查询本周.上周.本月.上个月份的数据[转] /*今天*/ select * from 表名 where to_days(时间字段) = to_days(now()); /*昨 ...
- php mysql查询时间_php查询时间段 mysql时间查询
本节内容: mysql时间查询 数据表的结构: 复制代码 代码示例: CREATE TABLE IF NOT EXISTS `user_log` ( `id` varchar(100) NOT NUL ...
- mysql 时间推移_随着时间的推移可视化COVID-19新案例
mysql 时间推移 This heat map shows the progression of the COVID-19 pandemic in the United States over ti ...
- java获取mysql时间格式化_Java与mysql的时间格式化问题,获取时间的上下午
Java与mysql的时间格式化问题,获取时间的上下午java 在项目中常常会遇到对时间进行格式化的问题,一次在对应用中发现,使用Java的SimpleDateFormat格式化时间,获取到的是上午, ...
- mysql 时间 sql_MySQL sql语句获取当前日期|时间|时间戳
1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +-------+ | now() | +-------+ | 2013-04-0 ...
- mysql 时间计算函数_MySQL时间计算函数DATE_SUB()用法简介说明
摘要: 下文讲述MySQL数据库中时间计算函数DATE_SUB()的功能简介说明,如下所示: MySQL DATE_SUB 功能说明: MySQL DATE_SUB函数功能: 将一个时间值减去指定类型 ...
最新文章
- Android studio 文件包名连在一起的处理方法
- 普通大学生和大厂的距离有多长?
- TP5 行为Behavior用法说明
- 直播实录 | 基于生成模型的事件流研究 + NIPS 2017 论文解读
- JAVA Swing——框架(JFrame、JDialog)位置居于父窗口中央的解决方案
- 【codevs30123037】线段覆盖4、5,姗姗来迟
- esxi存储(外部共享存储)- Open FIle
- python界面-图形界面
- Android sendEmptyMessage(0)里面的“0”是啥意思?
- linux系统中怎么复制粘贴快捷键设置,复制粘贴的快捷键是什么 复制粘贴的快捷键介绍【步骤】...
- Android 手写签名 (图片合成)
- 3A(AF AE AWB)综述
- js 清除对象里的属性值为空的属性
- api windows 线程加锁_Windows 进程与线程管理
- python中空格键怎么写_python的空格键
- 建行与爱赏合作推出建行爱赏卡 刷卡消费“抢红包”
- 高德地图的circle圈
- 发表论文大概需要经历以下流程
- Codeforces-Round#548(Div.2)-C-Edgy Trees-快速幂
- STL——vector与迭代器