(新人必看)MySQL的函数了解一下!!!(日期和时间函数系统信息函数加密函数)
Posted 影之神
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(新人必看)MySQL的函数了解一下!!!(日期和时间函数系统信息函数加密函数)相关的知识,希望对你有一定的参考价值。
一、日期和时间函数
一、日期和时间函数
介绍:日期和时间函数主要用来处理日期和时间的值,一般的日期函数除了使用 DATE 类型的参数外,也可以使用DATETIME 或 TIMESTAMP 类型的参数,只是忽略了这些类型值的时间部分。类似的情况还有以 TIME 类型为参数的函数,可以接受 TIMESTAMP 类型的参数,只是忽略其中的日期部分,许多日期函数可以同时接受数值和字符串类型的参数。
日期和时间函数 | 功能介绍 |
CURDATE( ) 和 CURRENT_DATE( ) | 这两个函数作用相同,都是返回当前系统的日期值 |
CURTIME( ) 和 CURRENT_TIME( ) | 这两个函数作用相同,都是返回当前系统的时间值 |
CURRENT_TIMESTAMP( )、 LOCALTIME( )、NOW( )、 SYSDATE( ) | 这 4 个函数作用相同,都是返回当前系统的日期和时间值 |
DAYNAME(date) | 返回日期参数 date 对应的星期几的英文名称。例如 ,dayname("2017-07-24") 的值为 Monday |
DAYOFWEEK(date) | 返回日期参数 date 对应的一周的索引位置。返回值的范围是 1 ~ 7。其中,1 表示周日,2 表示周一,…,7 表示周六。例如,dayofweek("2017-07-24") 的值为 2,表示周一 |
WEEKDAY(date) | 返回日期参数 date 对应的一周的索引位置。返回值的范围是 0 ~ 6。其中,0 表示周一,1 表示周二,…,6 表示周日。例如,weekday("2017-07-24") 的值为 0,表示周一 |
WEEK(date,mode) | 该函数返回日期参数 date 对应的星期数。WEEK( )的双参数形式允许指定该星期是否起始于周日或周一, 以及返回值的范围是否为从 0 到 53 或从 1 到53。若 mode 参数被省略,则使用 default_week_format 系统自变量的值 |
DAYOFYEAR(date) | 返回日期参数 date 对应的当前年份的第几天,范围为 1 ~ 365 |
year(date) | 返回日期参数 date 对应的年份 |
month(date) | 返回日期参数 date 对应的月份 |
day(date) | 返回日期参数 date 对应的当前月份的天数值 |
DATE_ADD(date,INTERVAL expr type) 和 ADDDATE(date, INTERVAL expr type) | 加法计算日期函数,这两个函数作用相同,都是返回一个以参数 date 为起始日期加上时间间隔之后的日期值。expr 参数是希望添加的时间间隔,type 表示时间间隔的类型,type 和 expr 取值见表 5.6 |
DATE_SUB(date,INTERVAL expr type) 和 SUBDATE(date,INTERVAL expr type) | 减法计算日期函数,这两个函数作用相同,都是返回一个以参数 date 为起始日期减去时间间隔之后的日期值。expr 参数是希望添加的时间间隔,type 表示时间间隔的类型,type 和 expr 取值见表 5.6 |
ADDTIME(time,expr) | 加法计算时间值函数,返回将 expr 值加上原始时间time 之后的值 |
SUBTIME(time,expr) | 减法计算时间值函数,返回将原始时间 time 减去expr 之后的值 |
DATEDIFF(date1,date2) | 计算两个日期之间天数间隔的函数,返回参数 date1 减去 date2 之后的值。如果 date1 在 date2 之前,返回的值为负值 |
DATE_FORMAT(date, format) | 日期和时间格式化函数。返回根据参数 format 指定的格式显示的 date 值。format 包含的格式见表 5.7,即 DATE_FORMAT 和 TIME_FORMAT 函数中format 格式表 |
TIME_FORMAT(time, format) | 时间格式化函数。返回根据参数 format 指定的格式显示的 time 值 |
type 和 expr 取值
type 值 | 预期的 expr 格式 |
MICROSECOND | 微秒数 |
SECOND | 秒数 |
MINUTE | 分钟数 |
HOUR | 小时数 |
DAY | 天数 |
WEEK | 周数 |
MONTH | 月数 |
QUARTER | 季度数 |
YEAR | 年数 |
SECOND_MICROSECOND | ‘秒数 . 微秒数’ |
MINUTE_MICROSECOND | ‘分钟数 . 微秒数’ |
MINUTE_SECOND | ‘分钟数 . 秒数’ |
HOUR_MICROSECOND | ‘小时数 . 微秒数’ |
HOUR_SECOND | ‘小时数 : 分钟数 : 秒数’ |
HOUR_MINUTE | ‘小时数 : 分钟数’ |
DAY_MICROSECOND | ‘天数 . 微秒数’ |
DAY_SECOND | ‘天数 小时数 : 分钟数 : 秒数’ |
DAY_MINUTE | ‘天数 小时数 : 分钟数’ |
DAY_HOUR | ‘天数 小时数’ |
YEAR_MONTH | ‘年数 - 月数’ |
DATE_FORMAT 和 TIME_FORMAT 函数中 format 格式表
格式说明符 | 描述说明 |
%a | 一星期中每天名称的缩写(Sun...Sat) |
%b | 月份的缩写(Jan...Dec) |
%c | 月份的数字表现形式(0...12) |
%D | 带有英语后缀的一个月中的每一天的名称(0th、1st、2nd、3rd) |
%d | 用数字形式表现的每月中的每一天(00...31) |
%e | 用数字形式表现的每月中的每一天(0...31) |
%f | 毫秒(000000...999999) |
%H | 24 时制显示的小时(00...23) |
%h | 12 时制显示的小时(01...12) |
%I | 12 时制显示的小时(01...12) |
%i | 以数字形式表现的分钟数(00...59) |
%j | 一年中的每一天(001...366) |
%k | 24 时制小时的另一种表现格式(0...23) |
%l | 12 时制小时的另一种表现格式(1...12) |
%M | 用完整英文名称表示的月份(January...December) |
%m | 用数字表现的月份(00...12) |
%p | 上午(AM)或下午(PM) |
%r | 12 时制的时间值(hh:mm:ss,后跟 AM 或 PM) |
%S | 秒(00...59) |
%s | 秒(00...59) |
%T | 24 时制的小时(hh:mm:ss) |
%U | 星期(00...53),其中星期天是每星期的开始日 |
%u | 星期(00...53),其中星期一是每星期的开始日 |
%V | 星期(01...53),其中星期天是每星期的开始日,和 %X 一起使用 |
%v | 星期(01...53),其中星期一是每星期的开始日,和 %x 一起使用 |
%W | 一星期中各日名称(Sunday...Saturday) |
%w | 一星期中各日名称(0 代表星期日,6 代表星期六,以此类推) |
%X | 某星期所处年份。其中,星期天是每星期的开始日,采用 4 位数字形式表现,和 %V 一起使用 |
%x | 某星期所处年份。其中,星期一是每星期的开始日,采用 4 位数字形式表现,和 %V 一起使用 |
%Y | 4 位数字表示的年份 |
%y | 2 位数字表示的年份 |
示例:
1.使用 curdate() 和 current_date() 显示当前系统日期。
代码:select curdate(),current_date()
2.使用 curtime() 和 current_time() 显示当前系统时间。
代码:select curtime(),current_time()
3.使用 current_timestamp()、localtime()、now() 和 sysdate() 函数显示当前系统的日期和时间。
代码:select current_timestamp(),localtime(),now(),sysdate()
4.使用 dayname()、dayofweek() 和 weekday() 函数返回指定日期所对应的星期信息。
代码:select dayname(now()),dayofweek(now()),weekday(now())
5.使用 date_format(date,format) 函数显示当前系统时间,格式为“4 位年 - 月 - 日 小时 : 分钟 : 秒”,其中小时为 24 小时制。
代码:select date_format(now(),'%Y-%c-%d %H:%i:%s')
6.使用 date_add(date,INTERNAL expr type) 和 adddate(date,INTERNAL expr type) 函数对当前系统时间执行加法操作。
代码:select date_format(now(),'%Y-%c-%d %H:%i:%s') 当前时间 , DATE_ADD(now(),INTERVAL 20 SECOND) 增加 20秒 ,ADDDATE(now(),INTERVAL 20 MINUTE) 增加 20 分钟 , ADDDATE(now(),INTERVAL '1 1:1:1' DAY_SECOND) 增加 1 天 1 小时 1 分钟 1 秒
7.使用 datediff(date1,date2) 返回当前日期与 2017-5-25 日之间的间隔天数。
代码:select datediff(now(),'2017-5-25')
二、系统信息函数
介绍:mysql 系统信息函数用于获取 MySQL 数据库的系统信息,这些信息主要包括:数据库的版本号、当前用户名和连接数、系统字符集以及最后一个系统生成的值等。
系统信息函数 | 功能介绍 |
VERSION() | 返回当前 MySQL 版本号的字符串。执行“select version( )”,返回作者使用的 MySQL 版本 5.6.24 |
CONNECTION_ID() | 返回当前 MySQL 服务器当前用户的连接次数。每个连接都有各自唯一的 ID,登录次数不同,返回的数值也就不同 |
PROCESSLIST() | "show processlist" 输出结果显示哪些线程在运行,不仅可以查看当前所有连接数,还可以查看当前的连接状态,帮助识别出有问题的查询语句等。如果是 root 账号,能看到所有用户的当前连接;如果是其他普通帐号,则只能看到自己占用的连接。show processlist 只列出前100 条,如果想全部列出可使用 "show full processlist" 命令 |
DATABASE(), SCHEMA() | 返回使用 utf8 字符集的默认(当前)数据库名 |
USER(),CURRENT_ USER(),SYSTEM_ USER(), SESSION_USER() | 这几个函数返回当前被 MySQL 服务器验证的用户和主机名组合。这个值符合确定当前登录用户存取权限的 MySQL 账户。一般情况下,这几个函数的返回值是相同的 |
CHARSET(str) | 返回字符串 str 自变量的字符集 |
LAST_INSERT_ID() | 获取最后一个自动生成的 ID 值的函数。自动返回最后一个 INSERT或 UPDATE 为 AUTO_INCREMENT 列设置的第一个发生的值 |
示例:
1.使用 show processlist() 输出当前用户的连接信息。
代码:show processlist();
2.使用 charset(str) 返回 str 字符串默认的字符集。
代码:select CHARSET("test"),CHARSET(CONVERT("test" USING latin1))
3.使用 LAST_INSERT_ID() 返回最后一个自动生成的 ID 值,分一次插入一条记录和一次插入多条记录进行考察。
代码1:在 test 数据库中创建表 student,其中 id 为主键,为 int 且自动增长: create table student(id int auto_increment not null primary key, name varchar(20));
代码2:分别向表 student 插入3 条记录: insert into student values(null,'zhangsan'); insert into student values(null,'lisi'); insert into student values(null,'wangwu');
代码:分别向表 student 插入两条记录: insert into student values(null,'zhaoliu'),(null,'sunqi');
注意:
- 产生上述现象的原因在于:当使用 insert 语句插入多行记录时,LAST_INSERT_ID( ) 函数只返回插入的第一行数据时产生的值。
- LAST_INSERT_ID( ) 函数返回结果与 table 无关, 如果向表 1 插入数据后, 再向表 2 中插入数据, 则 LAST_ INSERT_ID( ) 函数返回结果是表 2 中的 ID 值。
三、加密函数
介绍:MySQL 中加密函数用来对数据进行加密和解密的处理,以保证数据表中某些重要数据不被别人窃取,这些函数能保证数据库的安全。
加密函数 | 功能介绍 |
PASSWORD(str) | 加密函数。该函数对原明文 str 进行加密,并返回加密之后的字符串。该加密函数不可逆 |
MD5(str) | 加密函数。该函数对原明文 str 计算出一个 MD5 128 比特校验和,该值以 32 位十六进制数字的二进制字符串形式返回。该加密函数可逆 |
ENCODE(str,pswd_str) | 加密函数。该函数使用 pswd_str 作为密钥对 str 进行加密,该加密函数可以使用 DECODE() 函数进行解密 |
DECODE(crypt_str, pswd_str) | 解密函数。使用 pswd_str 作为密钥,对经过 ENCODE 加密之后的密文 crypt_str 进行解密 |
示例:
1.分别使用 PASSWORD(str) 和 MD5(str) 对密文“test”进行加密操作,并显示密文。
代码:select PASSWORD('test'), MD5('test');
2.使用 ENCODE(str,pswd_str) 对密文“test”进行加密操作,其中“hello”为加密密钥。
代码:select ENCODE('test','hello'), LENGTH(ENCODE('test','hello'));
3.使用 DECODE(crypt_str,pswd_str) 解密被 ENCODE 加密之后的信息。
代码:select DECODE(ENCODE('test','hello'),'hello');
以上是关于(新人必看)MySQL的函数了解一下!!!(日期和时间函数系统信息函数加密函数)的主要内容,如果未能解决你的问题,请参考以下文章
(新人必看)MySQL的函数了解一下!!!(日期和时间函数系统信息函数加密函数)
(新人必看)MySQL的函数了解一下!!!(数学函数控制流函数字符串函数)
(新人必看)MySQL的函数了解一下!!!(数学函数控制流函数字符串函数)