一文速学-玩转MySQL时间运算函数以及时间匹配操作详解+实例代码_mysql 时间运算

文末

我将这三次阿里面试的题目全部分专题整理出来,并附带上详细的答案解析,生成了一份PDF文档

  • 第一个要分享给大家的就是算法和数据结构

网易严选Java开发三面面经:HashMap+JVM+索引+消息队列

  • 第二个就是数据库的高频知识点与性能优化

网易严选Java开发三面面经:HashMap+JVM+索引+消息队列

  • 第三个则是并发编程(72个知识点学习)

网易严选Java开发三面面经:HashMap+JVM+索引+消息队列

  • 最后一个是各大JAVA架构专题的面试点+解析+我的一些学习的书籍资料

网易严选Java开发三面面经:HashMap+JVM+索引+消息队列

还有更多的Redis、MySQL、JVM、Kafka、微服务、Spring全家桶等学习笔记这里就不一一列举出来

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

2.date_add()

date_add顾名思义就是增加一个时间间隔的意思,基本语法:

date_add(<时间数据>,interval <数值> <时间单位> )

后面的时间单位和interval的时间单位类型是一样的,第三篇也已经提到过后缀时间单位,这里不做演示,下面将结合前三张的文章做一些较为复杂的时间取值:

选择至今开始到近七日总的时间片内的数据:

between cast(date_sub(date_format(curdate(),'%Y%m%d') , interval 7 day)
 as DECIMAL)
 and cast(date_sub(date_format(curdate(),'%Y%m%d') , interval 1 day)
as DECIMAL)

选择昨日的数据:

and time= cast(date_sub(date_format(curdate(),'%Y%m%d') , interval 1 day)
 as DECIMAL)

看了前三篇文章应该很好理解套用这些函数的功能了,可以任意的进行时间加减运算了。

3. date_sub()

减去一个时间间隔,这里可以使用interval的众多时间单位来实现一些精密的时间运算。

select date_sub(create_time ,interval '1 10:10:10' day_second )
 as times from value_test

意为减去1天1小时10分钟10秒:

也可以使用date_add()代替,只要interval数值为负数就好了。 如:

select date_add(create_time ,interval '-1 10:10:10' day_second )
 as times from value_test

4.period_add()

period_add()函数的基本语法格式为:

period_add(P,N)

从add就可以看出来也是一个相加函数,P为指定的日期数,而N则为加减的时间。和date_add不同的是,period_add不需要使用interval指定日期数值,该函数根据输入的P的长度自动判断相加减的单位。当输入的为yyyymm时,N被判别为月份相加:

select PERIOD_ADD(202201,10) as times 

当输入为yyyymmdd时,N被判定为天数:

select PERIOD_ADD(20220101,10) as times 

用该函数的时候要注意一下,period_add并不适用于列运算,如果用于一列作运算则会报错:

select PERIOD_ADD(time,10) as times from value_test

> Incorrect arguments to period_add

5.period_diff(P1,P2)

该函数功能为返回P1-P2的时间差,P1和P2必须为yyyymm年月的形式,说实话这函数几乎没人用,挺鸡肋的。

select PERIOD_diff(202201,202202)as times

6.datediff(date1,date2)

返回两个日期之间的间隔:

select datediff('20220601','20220501') as time

但是date1和date2只能为日期yyyymmdd,不是这个格式将会输出null。

该函数不止可以和时间类型数据识别运算,还可以与其他存储时间数据的类型作用:

select datediff(time,'20220501') as time from value_test

而且只要到达了yyyymmdd这种格式就可以运算:

select datediff(create_time,'20220501') as time from value_test

7.timediff(time1,time2)

格式和上述datediff一样,没用什么特点:

select timediff(time(create_time),'01:00:00') as time from value_test

8.time_to_sec()、sec_to_time()

time_to_sec()该函数可以将时间全都转换为秒数:

select time_to_sec(time(create_time)) as time from value_test

sec_to_time()该函数可以将秒数转化为时间,和time_to_sec()反着来了,可以再叠加一次回到原函数:

select sec_to_time(time_to_sec(time(create_time))) as time from value_test

9.to_days(date),from_days(days)

to_days()输入date日期转换为天数:

select to_days(time) as time from value_test

date输入的参数也没有规定必须要时间类型数据,其他存储可识别的时间类型格式都可以。

其终止时间为:0000/00/00

from_days()则相反,将天数转换为date,这里我们也用两个嵌套得到原数据:

select from_days(to_days(time)) as time from value_test

10.time_formate

这里弥补一下上篇时间转换函数遗漏的time_format函数,用法很简单也只限制为时间time,与date_format不同的是:time_format可以将时间转换为00.00.00的形式:

select time_format(time(create_time),'%H.%i.%s') as time from value_test

二、时间格式匹配

1.get_format()

get_format()函数语法格式为:

get_format(<时间数据>,'<指定字符 'eur'|'usa'|'jis'|'iso'|'internal'>')
select GET_FORMAT(date,'usa' ) as time 

这里直接以图表形式贴出:

时间类型地区时间格式返回结果
date‘usa’‘%m.%d.%Y’
date‘jis’‘%Y-%m-%d’
date‘iso’‘%Y-%m-%d’
date‘eur’‘%d.%m.%Y’
date‘internal’%Y%m%d’
datetime‘usa’‘%Y-%m-%d %H.%i.%s’
datetime‘jis’‘%Y-%m-%d %H:%i:%s’
datetime‘iso’‘%Y-%m-%d %H:%i:%s’
datetime‘eur’‘%Y-%m-%d %H.%i.%s’
datetime‘internal’‘%Y%m%d%H%i%s’
time‘usa’‘%h:%i:%s %p’

写在最后

作为一名即将求职的程序员,面对一个可能跟近些年非常不同的 2019 年,你的就业机会和风口会出现在哪里?在这种新环境下,工作应该选择大厂还是小公司?已有几年工作经验的老兵,又应该如何保持和提升自身竞争力,转被动为主动?

就目前大环境来看,跳槽成功的难度比往年高很多。一个明显的感受:今年的面试,无论一面还是二面,都很考验Java程序员的技术功底。

最近我整理了一份复习用的面试题及面试高频的考点题及技术点梳理成一份“Java经典面试问题(含答案解析).pdf和一份网上搜集的“Java程序员面试笔试真题库.pdf”(实际上比预期多花了不少精力),包含分布式架构、高可扩展、高性能、高并发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、Mycat、Netty、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等多个知识点高级进阶干货!

由于篇幅有限,为了方便大家观看,这里以图片的形式给大家展示部分的目录和答案截图!

Java经典面试问题(含答案解析)

阿里巴巴技术笔试心得

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

Java经典面试问题(含答案解析)

[外链图片转存中…(img-G4JPbgHJ-1715491360163)]

阿里巴巴技术笔试心得

[外链图片转存中…(img-ODYVjKnh-1715491360163)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值