MySQL的日期和时间函数(十二)下

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: MySQL的日期和时间函数(十二)

九 其他单日期简单查询


除了上面的基本操作之外,单个日期还有一些其他的操作。


九.一 展示月名 monthname(date)


将月名 默认按照英文进行展示。


  select monthname(now());


20191128095158160.png


November 为11月的英文单词。


九.二 展示星期的名 dayname(date)


将星期几 以英文的形式展示出来。


  select dayname(now());


20191128095204867.png


Wednesday 为星期三的英文单词。


九.三 展示工作日索引 weekday(d)


展示的也是 这一天,是这一周的第几个。


  select weekday(now());


20191128095211659.png


与 dayofweek() 类似 。但dayofweek() 是星期日表示1, 星期三表示4. 范围是 1~7.


而 weekday() 是星期一 表示0, 星期三表示 2. 范围是0~6.


推荐使用 dayofweek() 函数。


九.四 查询当前月的最后一天 last_day(date)


可以查询出,某个月的最后一天。


  select last_day(now()),last_day('2019-02-03'),last_day('2000-02-04');


20191128095216759.png


注意,只有 last_day(date) 函数,没有 first_day(date) 函数。 要查询当月的第一天,


可以 先查询出年,再查询出当前月,最后与 ‘01’ 进行拼接来表示。


九.五 提取日期 date(d1)


将日期 时间中的日期部分提取出来。


  select date('1995-02-07 11:23:59'),date('1995-02-07');


20191128095309695.png


九.六 提取时间 time(d1)


将日期 时间中的时间部分提取出来


  select time('1995-02-07 11:23:59'),time('11:23:59');


2019112809531841.png


九.七 改变 系统变量 lc_time_names


查询 monthname(), dayname() 时显示的是英文, 如果想让其显示中文呢, 要改变 lc_time_names的默认值。


默认是 en_US, 显示英文。


1 . 查询 变量 ‘lc_time_names’


  show variables like 'lc_time_names';


20191128095231375.png


2 .展示 monthname 和dayname


  select monthname(now()),dayname(now());


20191128095238259.png


3 . 改变变量 ‘lc_time_names’ 的值为 ‘zh_CN’ 中文。


  set lc_time_names='zh_CN';


20191128095243955.png


4 . 再次查询 monthname 和dayname


  select monthname(now()),dayname(now());


2019112809524855.png


发现,展示成相应的中文了。


5 . 不要忘记,再改回去噢


  set lc_time_names='en_US';


20191128095255954.png


十. 两个日期之间的比较函数


常见的有,一个日期,加上多少天,加上多少月,即往后,变成新的一天是什么。 一个日期,减去多少天,减去多少月,即往前,变成新的一天是什么。 也有比较一下,两个日期之间相差多少天。 也有时间,往前,往后的。


十.一 往后 添加参数 date_add(d1, interval n type) 和 addDate(d1,interval n type)


是往后,添加多少天,多少月的意思。 其中,date_add() 与addDate() 函数 是一样的,


只是 addDate() 可以不写类型,直接填充n, 变成 addDate(d1,n),不写时,默认填充的是天 Day,也可以填写负值。


而 date_add() 却不能省略,必须完整填写 (interval n type) ,且是正值。


推荐使用 date_add() 函数。


其中,后面的那个 type 的可取值范围 就是 extract() 函数中的 type 类型,即 六.一 中的那个表格。


但 用日期时, 一般用 Year,Month,Day 三个。


对于复杂的日期变换,可以进行嵌套 date_add() 函数。


如查询 当前日期往后一天的, 当前日期往后两个月的, 当前日期往后一月还有三天的


  select now() as '1',addDate(now(),1) as '2',date_add(now(),interval 1 day) as '3',
  date_add(now(),interval 2 month) as '4', date_add(date_add(now(),interval 1 month),interval 3 day) as '5';


20191128095332738.png


当前是 11-27日, 添加1天是 11-28日, 添加两个月是 2020-01-27,


添加一个月零3天是, 12-30。


十.二 往前 减去参数 date_sub(d1,interval n type) 和subDate(d1,interval n type)


是往前 减去多少天,多少月的意思。 其中,date_sub() 与subDate() 函数是一样的。


只是 subDate() 可以不写类型,直接填充民, 变成 subDate(d1,n),不写时,默认填充的是天 Day,也可以填写负值。


而 date_sub() 却不能省略,必须完整填写 (interval n type),且是正值。


推荐使用 date_sub() 函数。


对于复杂的日期变换,可以进行嵌套 date_sub() 函数。


如查询 当前日期往前一天的, 当前日期往前两个月的, 当前日期往前一月又三天的


  select now() as '1',subDate(now(),1) as '2',date_sub(now(),interval 1 day) as '3',
  date_sub(now(),interval 2 month) as '4', date_sub(date_sub(now(),interval 1 month),interval 3 day) as '5';


20191128095339802.png


当前是 11-27日, 减去1天是 11-26日, 减去两个月是 2019-09-27


减去一个月零3天是, 2019-10-24。


十.三 两个日期之间相差的整天数 DateDiff(d1,d2)


可以比较出两个日期相差的天数。 diff 为 Difference 的简写。


   select DateDiff(now(),date_add(now(),interval 20 day)),DateDiff(now(),'2018-11-27');


20191128095345796.png


如果d1>d2, 返回正数。 d1<d2, 返回负数。


十.四 时间相加的 addTime(t1,t2)


对时间的操作。 type 通常用 Hour,Minute, Second 三个类型。


  select now(), addTime(time(now()),'0:01:20'),addTime(time(now()),'01:02:03');


2019112809535447.png


当前是 17:08:29, 添加1分钟20秒为 17:09:49,


添加 1小时2分钟3秒,为 18:10:32 秒


十.五 时间相差 subTime(t1,t2)


  select now(), subTime(time(now()),'0:01:20'),subTime(time(now()),'01:02:03');


20191128095358271.png


当前是 17:10:52, 减去1分钟20秒为 17:09:32,


减去 1小时2分钟3秒,为 16:08:49


十一 日期和时间的格式化


类似于 java 中的 java.text.DateFormatter 类。


十一.一 格式化的类型


只列举业务开发中几个常见的说明符号。 注意,大小写是有区别的。


image.png


十一. 二 将日期转换字符串 date_format(d,f)


将当前日期转换成中文的形式。


  select now(),date_format(now(),'%Y%m%d %H%i%S'),date_format(now(),'%Y年%m月%d日 %H小时%i分钟%S秒');


20191128095412802.png


十一.三 将时间转换成字符串 time_format(t,f)


将当前日期转换成中文的形式


  select now(),time_format(now(),'%H%i%S'),time_format(now(),'%H小时%i分钟%S秒');


20191128095419421.png


十一.四 将字符串转换成日期 str_to_date(str,f)


将日期形式的字符串按照其能匹配的格式转换成相应的日期。


  select str_to_date('27/11/2019','%d/%m/%Y') as '1',str_to_date('173223','%H%i%S') as '2',
  str_to_date('2019年11月27日','%Y年%m月%d日') as '3',time(str_to_date('17时32分23秒','%H时%i分%S秒')) as '4',
  str_to_date('27/11/2019 173223','%d/%m/%Y %H%i%S') as '5',
  str_to_date('2019年11月27日17时32分23秒','%Y年%m月%d日%H时%i分%S秒') as '6';


20191128095425113.png


单独时间格式化的话,显示为null. 所以,str_to_date() 时把日期加上。


谢谢!!!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL 数据挖掘
MYSQL日期与时间函数的实用技巧
MYSQL日期函数与时间函数是数据库操作的关键工具,可轻松处理、查询、比较和格式化日期时间数据。它们能提取日期的年、月、日等部分,便于筛选和统计;同时,也能处理时间数据,如计算时间差、获取当前时间,助力用户更好地管理时间信息。掌握这些函数,不仅能提升数据库操作效率,还能为数据分析和报表生成提供有力支持。无论初学者还是资深数据库管理员,精通MYSQL的日期和时间函数都至关重要,以满足各种数据处理需求,确保数据的准确性和高效性。
79 0
|
10天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
1月前
|
关系型数据库 MySQL Java
mysql数据库处理TIMESTAMP格式日期
该内容提到了关于MySQL数据库处理TIMESTAMP格式日期的解决方案。首先,引用了两篇CSDN博客文章,一篇是关于使用MyBatis在MySQL中添加或修改TIMESTAMP日期的,另一篇是关于将Oracle的TIMESTAMP字段通过MyBatis插入到数据库的。接着,提到一个错误信息,说明MySQL表中不能有多个TIMESTAMP列。然后,展示了如何设置数据库字段(ctime和mtime)自动记录创建和更新时间,并提供了对应的mapper文件和Java字段定义,以实现业务代码中无需手动设置这些时间戳。
21 2
|
2月前
|
关系型数据库 MySQL
最全总结---36种MySQL时间函数
最全总结---36种MySQL时间函数
60 0
|
6月前
|
SQL 关系型数据库 MySQL
MySQL中日期时间类型与格式化
MySQL中日期时间类型与格式化
174 0
|
4月前
|
SQL 关系型数据库 MySQL
|
5月前
|
SQL 关系型数据库 MySQL
MySQL中的时间函数Now和SYSDate有什么区别?
MySQL中的时间函数Now和SYSDate有什么区别?
31 1
|
5月前
|
SQL 关系型数据库 MySQL
Mysql数据库 5.SQL语言聚合函数 语言日期-字符串函数
Mysql数据库 5.SQL语言聚合函数 语言日期-字符串函数
43 0
|
6月前
|
关系型数据库 MySQL
mysql只修改日期不修改时间
mysql只修改日期不修改时间
|
7月前
|
存储 Cloud Native 关系型数据库
在MySQL中使用VARCHAR字段进行日期筛选
在MySQL中使用VARCHAR字段进行日期筛选
54 0