[MySQL]日期和时间函数(二)

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

5 时间和秒钟转换的函数

TIME_TO_SEC(time)

将 time 转化为秒并返回结果值。转化的公式为: 小时*3600+分钟 *60+秒

SEC_TO_TIME(seconds)

将 seconds 描述转化为包含小时、分钟和秒的时间

代码示例

SELECT
       TIME_TO_SEC(CURTIME()),
       SEC_TO_TIME(53515)
FROM DUAL;

6 计算日期和时间的函数

DATE_ADD(datetime, INTERVAL expr type), ADDDATE(date,INTERVAL expr type)

返回与给定日期时间相差INTERVAL时间段的日期时间

type的取值:

SELECT
       NOW(),
       DATE_ADD(NOW(),INTERVAL 1 YEAR),
       DATE_ADD(NOW(),INTERVAL -1 YEAR)
FROM DUAL;

SELECT
       DATE_ADD(NOW(), INTERVAL 1 DAY) AS col1,
       DATE_ADD('2021-10-21 23:32:12',INTERVAL 1 SECOND) AS col2,
       ADDDATE('2021-10-21 23:32:12',INTERVAL 1 SECOND) AS col3,
       DATE_ADD('2021-10-21 23:32:12',INTERVAL '1_1' MINUTE_SECOND) AS col4,
       DATE_ADD(NOW(), INTERVAL -1 YEAR) AS col5, #可以是负数
       DATE_ADD(NOW(), INTERVAL '1_1' YEAR_MONTH) AS col6 #需要单引号
FROM DUAL;

DATE_SUB(date,INTERVAL expr type),SUBDATE(date,INTERVAL expr type)

返回与date相差INTERVAL时间间隔的日期

type的取值:

SELECT
       NOW(),
       DATE_SUB(NOW(),INTERVAL 1 YEAR)
FROM DUAL;

ADDTIME(time1,time2)

返回time1加上time2的时间。当time2为一个数字时,代表的是秒 ,可以为负数

SUBTIME(time1,time2)

返回time1减去time2后的时间。当time2为一个数字时,代表的是 秒 ,可以为负数

DATEDIFF(date1,date2)

返回date1 - date2的日期间隔天数

TIMEDIFF(time1, time2)

返回time1 - time2的时间间隔

FROM_DAYS(N)

返回从0000年1月1日起,N天以后的日期

TO_DAYS(date)

返回日期date距离0000年1月1日的天数

LAST_DAY(date)

返回date所在月份的最后一天的日期

MAKEDATE(year,n)

针对给定年份与所在年份中的天数返回一个日期,即指定年份的第几天

MAKETIME(hour,minute,second)

将给定的小时、分钟和秒组合成时间并返回

PERIOD_ADD(time,n)

返回time加上n后的时间

代码示例

SELECT
       ADDTIME(NOW(),20),
       SUBTIME(NOW(),30),
       SUBTIME(NOW(),'1:1:3'),
       DATEDIFF(NOW(),'2021-10-01'),
       TIMEDIFF(NOW(),'2021-10-25 22:10:10'),
       FROM_DAYS(366),
       TO_DAYS('0000-12-25'),
       LAST_DAY(NOW()),
       MAKEDATE(YEAR(NOW()),32),
       MAKETIME(10,21,23),
       PERIOD_ADD(20200101010101,10)
FROM DUAL;`在这里插入代码片`

SELECT
       # 日期转化为数值
       CURDATE(),
       CURDATE() + 0,
       CURTIME() + 0,
       NOW() + 0
FROM DUAL;

7 日期的格式化与解析

格式化:日期 —> 字符串

解析: 字符串 —> 日期

这里指的是日期的显式格式化和解析

DATE_FORMAT(date,fmt)

按照字符串fmt格式化日期date值

TIME_FORMAT(time,fmt)

按照字符串fmt格式化时间time值

GET_FORMAT(date_type,format_type)

返回日期字符串的显示格式

既不是格式化也不是解析,用于得到日期的格式,如:'%Y-%M-%D'

STR_TO_DATE(str, fmt)

按照字符串fmt对str进行解析,解析为一个日期

非GET_FORMAT 函数中fmt参数常用的格式符:

GET_FORMAT函数中date_type和format_type参数取值如下:

代码示例

#格式化:
SELECT
       DATE_FORMAT(CURDATE(),'%Y-%M-%D'),
       DATE_FORMAT(NOW(),'%Y-%m-%d'),
       TIME_FORMAT(CURTIME(),'%h:%i:%S'),
       DATE_FORMAT(NOW(),'%Y-%M-%D %h:%i:%S %W %w %T %r')
FROM DUAL;

#解析:格式化的逆过程
SELECT
       STR_TO_DATE('2021-October-25th 11:37:30 Monday 1','%Y-%M-%D %h:%i:%S %W %w'),
       GET_FORMAT(DATE,'USA'),
       DATE_FORMAT(CURDATE(),GET_FORMAT(DATE,'USA'))
FROM DUAL;


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
关系型数据库 MySQL
最全总结---36种MySQL时间函数
最全总结---36种MySQL时间函数
55 0
|
5月前
|
SQL 关系型数据库 MySQL
MySQL中日期时间类型与格式化
MySQL中日期时间类型与格式化
160 0
|
3月前
|
SQL 关系型数据库 MySQL
|
4月前
|
SQL 关系型数据库 MySQL
MySQL中的时间函数Now和SYSDate有什么区别?
MySQL中的时间函数Now和SYSDate有什么区别?
31 1
|
4月前
|
SQL 关系型数据库 MySQL
Mysql数据库 5.SQL语言聚合函数 语言日期-字符串函数
Mysql数据库 5.SQL语言聚合函数 语言日期-字符串函数
42 0
|
5月前
|
关系型数据库 MySQL
mysql只修改日期不修改时间
mysql只修改日期不修改时间
|
6月前
|
存储 Cloud Native 关系型数据库
在MySQL中使用VARCHAR字段进行日期筛选
在MySQL中使用VARCHAR字段进行日期筛选
52 0
|
6月前
|
关系型数据库 MySQL
【MySQL用法】mysql日期时间函数总结(附带mysql官网介绍)
【MySQL用法】mysql日期时间函数总结(附带mysql官网介绍)
65 0
|
6月前
|
关系型数据库 MySQL PostgreSQL
修改mysql_fdw兼容日期为0的数据
日期本来是不能为0的,但mysql在非严格模式下可以设置日期为0,导致pg通过mysql_fdw访问mysql时遇到日期为0的数据会报错,这里给出一种简单的解决办法。
84 0
|
7月前
|
关系型数据库 MySQL
MySql 时间日期类型
MySql 时间日期类型
36 1