MySQL学习笔记(6):常用函数
短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
本文更新于2019-06-29,使用MySQL 5.7,操作系统为Deepin 15.4。
目录
- 数值函数
- 日期时间函数
- 字符串函数
- 流程函数
- 聚合函数
- 其他函数
- 全局变量
数值函数
函数 | 作用 |
---|---|
ABS(x) | 绝对值 |
CEIL(x) | 向上取整 |
FLOOR(x) | 向下取整 |
MOD(x, y) | 取余,等同x%y |
RAND() | [0, 1)区间的随机数 |
ROUND(x[, n]) | 四舍五入至n位小数,n默认为0 |
TRUNCATE(x, n) | 截断为n位小数 |
日期时间函数
函数 | 作用 |
---|---|
CURDATE() | 当前日期 |
CURTIME() | 当前时间 |
DATE_ADD(t, INTERVAL expr type) | 增加一定时间间隔 |
DATEDIFF(later, previous) | later减previous相差的天数,不考虑时间 |
DATE_FORMAT(t, fmt) | 使用fmt格式化 |
FROM_UNIXTIME(unix) | UNIX时间戳的日期时间 |
HOUR(t) | 小时 |
MINUTE(t) | 分钟 |
MONTHNAME(t) | 月份名(英文) |
NOW() | 当前日期时间 |
UNIX_TIMESTAMP(t) | 转换成UNIX时间戳 |
WEEK(t) | 一年中的第几周 |
YEAR(t) | 年份 |
DATE_ADD(t, INTERVAL expr type)
的type
可用如下的时间间隔类型。expr
使用对应的格式,格式允许不严格的间隔(即任何标点符都可)。格式中的数值可使用负数。若整个格式就是一个数值,则可直接使用数值类型的格式,否则应使用字符串类型的格式。
时间间隔类型 | 格式 |
---|---|
YEAR | YY |
MONTH | MM |
DAY | DD |
HOUR | hh |
MINUTE | mm |
SECOND | ss |
YEAR_MONTH | YY-MM |
DAY_HOUR | DD hh |
DAY_MINUTE | DD hh:mm |
DAY_SECOND | DD hh:mm:ss |
HOUR_MINUTE | hh:mm |
HOUR_SECOND | hh:mm:ss |
MINUTE_SECOND | mm:ss |
DATE_FORMAT(t, fmt)
的fmt
参数可使用的格式符如下:
格式符类型 | 格式符 | 说明 |
---|---|---|
秒 | %S/%s | 两位数字形式的秒(00, ..., 59) |
分 | %i | 两位数字形式的分(00, ..., 59) |
时 | %H | 两位数字形式的时,24小时制(00, ..., 23) |
时 | %h/%I | 两位数字形式的时,12小时制(01, ..., 12) |
时 | %k | 数字形式的时,24小时制(0, ..., 23) |
时 | %l | 数字形式的时,12小时制(1, ..., 12) |
时分秒 | %T | 两位数字,24小时制的时分秒(hh:mm:ss) |
时分秒 | %r | 两位数字,12小时制的时分秒(hh:mm:ss AM/PM) |
上下午 | %p | AM或PM |
星期 | %W | 英文星期(Sunday) |
星期 | %a | 英文缩写星期(Sun) |
星期 | %w | 数字形式的星期(0=Sunday) |
日 | %d | 两位数字形式的日(01, ..., 31) |
日 | %e | 数字形式的日(1, ..., 31) |
日 | %D | 英文后缀形式的日(1st) |
月 | %M | 英文月(January) |
月 | %b | 英文缩写月(Jan) |
月 | %m | 两位数字形式的月(01, ..., 12) |
月 | %c | 数字形式的月(1, ..., 12) |
年 | %Y | 4位数字形式的年 |
年 | %y | 2位数字形式的年 |
%j | 一年中第几天,三位数字形式(001, ..., 366) | |
%U | 一年中第几周,Sunday为周中第一天,第一个Sunday为第一周的开始,两位数字形式(00, ..., 52) | |
%u | 一年中第几周,Monday为周中第一天,01-01为第一周的开始,两位数字形式(00, ..., 52) | |
% | %% | 字符% |
字符串函数
字符串首字符的下标为1。
函数 | 作用 |
---|---|
CONCAT(v[, ...]) | 连接字符串,v也可以是数值 |
INSERT(str, idx, len, substr) | 将str从idx(含)起的len个字符替换为substr |
LEFT(str, len) | 取左侧len个字符 |
LENGTH(str) | 字符串长度 |
LOWER(str) | 转换成小写 |
LPAD(str, len, pad) | 使用pad在str左侧填充至长度为len |
LTRIM(str) | 去掉左侧空格 |
REPEAT(str, n) | 重复n次 |
REPLACE(str, old, new) | 使用new替换old |
RIGHT(str, len) | 取右侧len个字符 |
RPAD(str, len, pad) | 使用pad在str右侧填充至长度为len |
RTRIM(str) | 去除右侧空格 |
STRCMP(str1, str2) | str1 |
SUBSTRING(str, idx, len) | 截取str从idx(含)起长度为len的子串 |
TRIM(str) | 去掉两侧空格 |
UPPER(str) | 转换成大写 |
流程函数
函数 | 作用 |
---|---|
IF(value, t, f) | 如果value为真则返回t,否则返回f |
IFNULL(value, result) | 如果value不为NULL则返回value,否则返回result |
CASE WHEN expr1 THEN result1 [WHEN ...] [ELSE default] END | 根据各表达式的真假返回结果 |
CASE value WHEN enum1 THEN result1 [WHEN ...] [ELSE default] END | value根据各枚举值返回结果 |
使用流程函数时注意NULL
的情况。
聚合函数
函数 | 作用 |
---|---|
BIT_AND(row) | 按位与 |
BIT_OR(row) | 按位或 |
其他函数
用于数据库管理的函数:
函数 | 作用 |
---|---|
CURRENT_USER() | 当前用户 |
DATABASE() | 当前数据库名,同SCHEMA |
PASSWORD(str) | 加密成系统密码,长度为41 |
SCHEMA() | 当前数据库名,同DATABASE |
USER() | 当前登录用户名 |
VERSION() | 当前MySQL版本 |
用于辅助查询的函数:
函数 | 作用 |
---|---|
FOUND_ROWS() | 上一次查询返回的行数 |
LAST_INSERT_ID() | 最后插入记录使用的自增长值。如一次插入多条记录,则返回第一条记录使用的自增长值 |
用于计算的函数:
函数 | 作用 |
---|---|
BIN(value) | 二进制形式表示 |
CRC32(value) | CRC32值 |
HEX(value) | 十六进制形式表示 |
INET_ATON(ip) | IP从点分十进制转换成网络字节序整数 |
INET_NTOA(uint) | IP从网络字节序整数转换成点分十进制 |
MD5(value) | MD5值 |
SHA1(value) | SHA1值 |
全局变量
变量 | 作用 |
---|---|
CURRENT_TIMESTAMP | 当前时间戳 |
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341