前言
时间在数据库中经常作为时间索引,在数据入库和出库以及更新的时候都需要变化。在一些指标计算或者是提取某段时间的数据时,都会根据数据库中的时间索引数据进行操作。因此很大一部分我们操作数据都得先从时间数据下手,但是想要真正提取到我们想要的时间作为索引,还需要我们掌握许多功能函数方便我们操作,这是一个比较复杂的运用过程。
上文:一文速学-玩转MySQL获取时间、格式转换各类操作方法详解 已经详细介绍了SQL时间数据类型:三种:Date、Datetime、Timestamp。以及如何在MySQL数据库中获取本地时间以及其他数据类型和时间数据类型的相互转换。在了解以上函数方法操作的基础之上,我们便可以开始进行时间运算得到我们想要的时间片了。因此特地写下这篇文章,记录一些十分好用常用的处理数据库SQL时间运算的函数,以及实例运用这些函数完成一些复杂查询任务。希望能够帮助到正在看此博文的各位,如果还有什么问题解决不了尽请在评论区提出,博主会一一作答。
MySQL时间选取函数
1.<time类型>(<数据>)类型
上文在获取本地日期的年份也日期时用到了HOUR(SYSDATE()),其实这也是最常用的时间选取函数,将要取的时间类型放前置就好了,这里将所有的前置时间函数贴出:
前置结果描述date获取日期 如2022-06-19time获取时间 如10:10:22.111111year获取年份 如2022quarter
获取当月季度 每三个月为一个季度 1-3为1季度
4-6为2季度,7-9为3季度,10-12为4季度。
month获取月份 如现在的6月份,就显示6week获取从1月1日开始度过的周数 现在也就是24周day获取天数到当前月份1日为止,如19日hour获取小时 如10点minute获取分钟 如现在16分钟second获取秒数 如59秒microsecond获取微秒数
由于展示函数格式均有重复性这里仅展示一种,展示的数据库仍和上次一样:
select week(create_time) from value_test
其他用法均类似,这里不再展示,将所有代码贴出大家可自行尝试:
select date(create_time) from value_test
select time(create_time) from value_test
select year(create_time) from value_test
select quarter(create_time) from value_test
select month(create_time) from value_test
select week(create_time) from value_test
select day(create_time) from value_test
select hour(create_time) from value_test
select minute(create_time) from value_test
select second(create_time) from value_test
select microsecond(create_time) from value_test
2.Extract()
和上述效果一样,除了没有date(),time() 的功能外,其他功能一应具全。并且还具有选取‘day_microsecond'等功能。
select EXTRACT(month from create_time) from value_test
同样这些代码格式具有重复性,这里把所有extarct可用的格式贴出:
前置结果描述date获取日期 如2022-06-19time获取时间 如10:10:22.111111year获取年份 如2022quarter
获取当月季度 每三个月为一个季度 1-3为1季度
4-6为2季度,7-9为3季度,10-12为4季度。
month获取月份 如现在的6月份,就显示6week获取从1月1日开始度过的周数 现在也就是24周day获取天数到当前月份1日为止,如19日hour获取小时 如10点minute获取分钟 如现在16分钟second获取秒数 如59秒microsecond获取毫秒数year_month获取年后月份 如:202206day_hour获取日和小时 如:1916day_minute获取日、小时、分钟 如191644day_second获取日到秒 如19164455day_microsecond获取日到微秒 如19164455123456hour_minute获取小时和分钟 如1646hour_second获取小时到秒数 如164555hour_microsecond获取小时到微妙数 如164555123456minute_second获取分钟到秒 如4813minute_microsecond获取分钟到微秒 如4813123456second_microsecond获取秒到微妙 如13123456
其他用法均类似,这里不再展示,将所有代码贴出大家可自行尝试:
select EXTRACT(year from create_time) from value_test
select EXTRACT(quarter from create_time) from value_test
select EXTRACT(month from create_time) from value_test
select EXTRACT(week from create_time) from value_test
select EXTRACT(day from create_time) from value_test
select EXTRACT(hour from create_time) from value_test
select EXTRACT(minute from create_time) from value_test
select EXTRACT(second from create_time) from value_test
select EXTRACT(microsecond from create_time) from value_test
select EXTRACT(year_month from create_time) from value_test
select EXTRACT(day_hour from create_time) from value_test
select EXTRACT(day_minute from create_time) from value_test
select EXTRACT(day_second from create_time) from value_test
select EXTRACT(day_microsecond from create_time) from value_test
select EXTRACT(hour_second from create_time) from value_test
select EXTRACT(hour_minute from create_time) from value_test
select EXTRACT(hour_microsecond from create_time) from value_test
select EXTRACT(minute_second from create_time) from value_test
select EXTRACT(minute_microsecond from create_time) from value_test
select EXTRACT(second_microsecond from create_time) from value_test
3.Dayof<时间类型>
共有三种函数:
格式结果描述dayofweek返回当日在该周的位置 1为星期天 2为星期二...dayofmonth返回当日在该月的位置 天数dayofyear返回当日在该年的位置 天数
select dayofweek(create_time) from value_test
select dayofmonth(create_time) from value_test
select dayofyear(create_time) from value_test
4.<时间类型>name()
该函数返回的是星期和月份的名称:
select dayname(create_time) from value_test
select monthname(create_time) from value_test
5.last_day()
该函数返回月份中的最后一天
select last_day('2022-02-01')
select last_day('2022-06-01')
可以利用计算得到当月共有多少天数。
点关注,防走丢,如有纰漏之处,请留言指教,非常感谢
以上就是本期全部内容。我是fanstuck ,有问题大家随时留言讨论 ,我们下期见。
参阅:
mysql 时间函数
版权归原作者 fanstuck 所有, 如有侵权,请联系我们删除。