【技术】MySQL 日期时间操作

MySQL 日期时间操作

  • [MySQL 系统时间](#MySQL 系统时间)
  • [MySQL 时间格式化](#MySQL 时间格式化)
  • [MySQL 年月日时分秒周](#MySQL 年月日时分秒周)
  • [MySQL 日期计算](#MySQL 日期计算)

MySQL 系统时间

  • now():系统时间,年月日时分秒
  • current_date:系统时间,年月日
  • current_time:系统时间,时分秒
  • current_timestamp:系统时间,年月日时分秒
sql 复制代码
select now(), current_date, current_time, current_timestamp

MySQL 时间格式化

  • date_format(time, format_str):对时间进行格式化,返回字符类型。第一个参数为日期,第二个参数为格式化字符串。
  • str_to_date(time_str, format_str):对字符串类型的日期进行格式化,返回日期类型。第一个参数为时间字符串,第二个参数为格式化字符串
  • format_str 含义:
    %y:2位年份
    %Y:4位年
    %m:数字月份
    %M:英语月份
    %d:日
    %h:12小时制
    %H:24小时制
    %i:分钟
    %s:秒
  • hour(time):获取小时
  • minute(time):获取分钟
  • second(time):获取秒
sql 复制代码
select date_format(now(), '%y-%m-%d %h:%i:%s');
SELECT str_to_date('2023-12-20 11:30:35','%Y-%m-%d %h:%i:%s');


MySQL 年月日时分秒周

  • year(time):获取时间中的年
  • month(time):获取时间中的月份
  • day(time):获取时间中的天
  • hour(time):获取时间中的小时(24小时)
  • minute(time):获取时间中的分钟
  • second(time):获取时间中的秒
  • dayofyear(time):获取时间中的天在本年中的天数。
  • dayofmonth(time):获取时间中的天在月中的天数。
  • dayofweek(time):获取时间中的天在本周中的天数,即周几,从周日开始,返回下标,下标从1开始。
  • dayname(time):获取时间中的天在本周中的天数,即周几,返回周的英语单词。
  • weekday(time):获取时间中的天在本周中的天数,即周几,从周一开始,返回下标,下标从0开始。
sql 复制代码
# 年月日
select year(now()), month(now()), day(now());
# 时分秒
select hour(now()), minute(now()), second(now());
# 天数
select dayofmonth(now()), dayofweek(now()), dayofyear(now());
# 周数
select dayname(now()), weekday(now()), dayofweek(now());

MySQL 日期计算

时分秒时差

  • timediff(end, start):时分秒时间差,返回格式为时分秒。可以搭配相关日期函数获取时分秒单个值。
sql 复制代码
select start, end, timediff(end, start) from date_test;

日期差

  • timestampdiff(time_flg, time1, time2):计算两个日期之间的时间差,根据指定的时间标识,可以获取年月日时分秒。注意 time_flg 时间标识大写。
sql 复制代码
select start, end, timestampdiff(YEAR , start, end) from date_test;
select start, end, timestampdiff(MONTH , start, end) from date_test;
select start, end, timestampdiff(DAY , start, end) from date_test;
select start, end, timestampdiff(HOUR , start, end) from date_test;
select start, end, timestampdiff(MINUTE , start, end) from date_test;
select start, end, timestampdiff(SECOND , start, end) from date_test;

日期加减

  • date_add(date, INTERVAL expr type):日期增加函数。第一个参数是当前时间。第二个参数 INTERVAL 是固定写法,expr 是增加的时间的表达式。type为增加的单位。
  • date_sub(date, INTERVAL expr type):日期增加函数。第一个参数是当前时间。第二个参数 INTERVAL 是固定写法,expr 是减少的时间的表达式。type为增加的单位。
sql 复制代码
# 获取 7 天前的日期,注意 INTERVAL 后面表达式的区别
select date_add(now(), INTERVAL -7 day), date_sub(now(), INTERVAL 7 day);

# 获取 7 天后的日期,注意 INTERVAL 后面表达式的区别
select date_add(now(), INTERVAL 7 day), date_sub(now(), INTERVAL -7 day);

-- 本周开始
select date_sub(curdate(), INTERVAL WEEKDAY(curdate()) DAY);
-- 本周结束
select date_sub(curdate(), INTERVAL WEEKDAY(curdate()) - 6 DAY);
-- 本月开始
select date_sub(curdate(), INTERVAL DAYOFMONTH(curdate()) -1 DAY);
-- 本月结束
select last_day(curdate());
相关推荐
权^22 分钟前
MySQL--聚合查询、联合查询、子查询、合并查询(上万字超详解!!!)
大数据·数据库·学习·mysql
Code成立1 小时前
1、深入理解Redis线程模型
数据库·redis·bootstrap
缘友一世3 小时前
macos安装mongodb
数据库·mongodb·macos
万事大吉CC4 小时前
mysql单表查询·3
数据库·mysql
bin91535 小时前
【EXCEL数据处理】000010 案列 EXCEL文本型和常规型转换。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。
大数据·数据库·信息可视化·数据挖掘·数据分析·excel·数据可视化
Miqiuha5 小时前
lock_guard和unique_lock学习总结
java·数据库·学习
一 乐6 小时前
学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习
Java探秘者10 小时前
Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境
java·开发语言·数据库·spring boot·spring cloud·maven·idea
2301_7869643610 小时前
3、练习常用的HBase Shell命令+HBase 常用的Java API 及应用实例
java·大数据·数据库·分布式·hbase
苹果醋310 小时前
大模型实战--FastChat一行代码实现部署和各个组件详解
java·运维·spring boot·mysql·nginx