(新人必看)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');

注意:

  1. 产生上述现象的原因在于:当使用 insert 语句插入多行记录时,LAST_INSERT_ID( ) 函数只返回插入的第一行数据时产生的值。
  2. 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的函数了解一下!!!(数学函数控制流函数字符串函数)

(新人必看)MySQL的函数了解一下!!!(数学函数控制流函数字符串函数)

新人必看送给新人的商业智能指南

leetcode 395. 至少有 K 个重复字符的最长子串----双指针篇5,滑动窗口篇4,新人理解递归必看篇!!