[MySQL][内置函数][日期函数][字符串函数][数学函数]详细解说 ...

打印 上一主题 下一主题

主题 531|帖子 531|积分 1593


1.日期函数

1.底子语法




  • 日期时间在MYSQL中是区分开的

    • 日期:年月日
    • 时间:时分秒

  • 获得年月日
    1. select current_date();
    2. +----------------+
    3. | current_date() |
    4. +----------------+
    5. | 2024-01-24     |
    6. +----------------+
    复制代码
  • 获得时分秒
    1. select current_time();
    2. +----------------+
    3. | current_time() |
    4. +----------------+
    5. | 13:51:21       |
    6. +----------------+
    复制代码
  • 获得时间戳
    1. select current_timestamp();
    2. +---------------------+
    3. | current_timestamp() |
    4. +---------------------+
    5. | 2024-01-24 13:51:48 |
    6. +---------------------+
    复制代码
  • 在日期的底子上加日期
    1. select date_add('2024-01-14', interval 10 day);
    2. +-----------------------------------------+
    3. | date_add('2024-01-14', interval 10 day) |
    4. +-----------------------------------------+
    5. | 2024-01-24                              |
    6. +-----------------------------------------+
    复制代码
  • 在日期的底子上减去时间
    1. select date_sub('2024-01-24', interval 2 day);
    2. +----------------------------------------+
    3. | date_sub('2024-01-24', interval 2 day) |
    4. +----------------------------------------+
    5. | 2024-01-22                             |
    6. +----------------------------------------+
    复制代码
  • 盘算两个日期之间相差多少天
    1. +-------------------------------+
    2. | datediff(now(), '1949-10-01') |
    3. +-------------------------------+
    4. |                         27143 |
    5. +-------------------------------+
    复制代码
2.示例1



  • 创建一张表,记载生日,
    1. create table tmp(
    2. id int primary key auto_increment,
    3. birthday date
    4. );
    复制代码
  • 添加当前日期
    1. insert into tmp(birthday) values(current_date());
    2. mysql> select * from tmp;
    3. +----+------------+
    4. | id | birthday   |
    5. +----+------------+
    6. | 1  | 2024-01-24 |
    7. +----+------------+
    复制代码
3.示例2



  • 创建一个留言表
    1. mysql> create table msg (
    2.         id int primary key auto_increment,
    3.         content varchar(30) not null,
    4.         sendtime datetime
    5. );
    复制代码
  • 插入数据
    1. mysql> insert into msg(content,sendtime) values('hello1', now());
    2. mysql> insert into msg(content,sendtime) values('hello2', now());
    3. mysql> select * from msg;
    4. +----+---------+---------------------+
    5. | id | content | sendtime            |
    6. +----+---------+---------------------+
    7. | 1  | hello1  | 2024-01-24 14:12:20 |
    8. | 2  | hello2  | 2024-01-24 14:13:21 |
    9. +----+---------+---------------------+
    复制代码
  • 表现所有留言信息,发布日期只表现日期,不用表现时间
    1. select content,date(sendtime) from msg;
    复制代码
  • 请查询在2分钟内发布的帖子

    • 理解:以下两种写法意思雷同

      • msg_time > cur_time - 2
      • msg_time + 2 > cur_time
        ![[Pasted image 20240225181330.png]]

    1. select * from msg where date_add(sendtime, interval 2 minute) > now();  
    2. select * from msg where date_sub(now(), interval 2 minute) < sendtime;
    复制代码


2.字符串函数

1.底子语法




  • 注意:

    • length函数返回字符串长度,以字节为单元
    • 如果是多字节字符则盘算多个字节数;如果是单字节字符则算作一个字节

      • 好比:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)


2.示例



  • 获取emp表的ename列的字符集
    1. select charset(ename) from EMP;
    复制代码
  • 要求表现exam_result表中的信息,表现格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”
    1. select concat(name, '的语文是', chinese, '分,数学是', math, '分') as '分数' from student;
    复制代码
  • 求门生表中门生姓名占用的字节数
    1. select length(name), name from student;
    复制代码
  • 将EMP表中所闻名字中有S的替换成’上海’
    1. select replace(ename, 'S', '上海'), ename from EMP;
    复制代码
  • 截取EMP表中ename字段的第二个到第三个字符
    1. select substring(ename, 2, 2), ename from EMP;
    复制代码
  • 以首字母小写的方式表现所有员工的姓名
    1. select concat(lcase(substring(ename, 1, 1)), substring(ename,2)) from EMP;
    复制代码

3.数学函数

1.底子语法




  • 关于ceilingfloor

    • C语言中的取整为**0向取证**
    • ceiling是向+∞取整
    • floor是向-∞取整

2.示例



  • 绝对值
    1. select abs(-100.2);
    复制代码
  • 向上取整
    1. select ceiling(23.04);
    复制代码
  • 向下取整
    1. select floor(23.7);
    复制代码
  • 保留2位小数位数(小数四舍五入)
    1. select format(12.3456, 2);
    复制代码
  • 产生随机数
    1. select rand();
    复制代码

4.其他函数



  • user() 查询当前用户
    1. select user();
    复制代码
  • **md5(str)**对一个字符串举行md5摘要,摘要后得到一个32位字符串
    1. select md5('admin')
    2. +----------------------------------+
    3. | md5('admin')                     |
    4. +----------------------------------+
    5. | 21232f297a57a5a743894a0e4a801fc3 |
    6. +----------------------------------+
    复制代码
  • **database()**表现当前正在使用的数据库
    1. select database();
    复制代码
  • **password()**函数,MySQL数据库使用该函数对用户加密
    1. select password('root');
    2. +-------------------------------------------+
    3. | password('root')                          |
    4. +-------------------------------------------+
    5. | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
    6. +-------------------------------------------+
    复制代码
  • ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值

    • 类似C语言中的三目运算符 a?b:c --> (val1 == null) ? val2 : val1
    1. select ifnull('abc', '123');
    2. +----------------------+
    3. | ifnull('abc', '123') |
    4. +----------------------+
    5. | abc                  |
    6. +----------------------+
    7. 1 row in set (0.01 sec)
    8. select ifnull(null, '123');
    9. +---------------------+
    10. | ifnull(null, '123') |
    11. +---------------------+
    12. | 123                 |
    13. +---------------------+
    14. 1 row in set (0.00 sec)
    复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王海鱼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表