1.日期函数
1.底子语法
- 日期时间在MYSQL中是区分开的
- 获得年月日
- select current_date();
- +----------------+
- | current_date() |
- +----------------+
- | 2024-01-24 |
- +----------------+
复制代码 - 获得时分秒
- select current_time();
- +----------------+
- | current_time() |
- +----------------+
- | 13:51:21 |
- +----------------+
复制代码 - 获得时间戳
- select current_timestamp();
- +---------------------+
- | current_timestamp() |
- +---------------------+
- | 2024-01-24 13:51:48 |
- +---------------------+
复制代码 - 在日期的底子上加日期
- select date_add('2024-01-14', interval 10 day);
- +-----------------------------------------+
- | date_add('2024-01-14', interval 10 day) |
- +-----------------------------------------+
- | 2024-01-24 |
- +-----------------------------------------+
复制代码 - 在日期的底子上减去时间
- select date_sub('2024-01-24', interval 2 day);
- +----------------------------------------+
- | date_sub('2024-01-24', interval 2 day) |
- +----------------------------------------+
- | 2024-01-22 |
- +----------------------------------------+
复制代码 - 盘算两个日期之间相差多少天
- +-------------------------------+
- | datediff(now(), '1949-10-01') |
- +-------------------------------+
- | 27143 |
- +-------------------------------+
复制代码 2.示例1
- 创建一张表,记载生日,
- create table tmp(
- id int primary key auto_increment,
- birthday date
- );
复制代码 - 添加当前日期
- insert into tmp(birthday) values(current_date());
- mysql> select * from tmp;
- +----+------------+
- | id | birthday |
- +----+------------+
- | 1 | 2024-01-24 |
- +----+------------+
复制代码 3.示例2
- 创建一个留言表
- mysql> create table msg (
- id int primary key auto_increment,
- content varchar(30) not null,
- sendtime datetime
- );
复制代码 - 插入数据
- mysql> insert into msg(content,sendtime) values('hello1', now());
- mysql> insert into msg(content,sendtime) values('hello2', now());
- mysql> select * from msg;
- +----+---------+---------------------+
- | id | content | sendtime |
- +----+---------+---------------------+
- | 1 | hello1 | 2024-01-24 14:12:20 |
- | 2 | hello2 | 2024-01-24 14:13:21 |
- +----+---------+---------------------+
复制代码 - 表现所有留言信息,发布日期只表现日期,不用表现时间
- select content,date(sendtime) from msg;
复制代码 - 请查询在2分钟内发布的帖子
- 理解:以下两种写法意思雷同
- msg_time > cur_time - 2
- msg_time + 2 > cur_time
![[Pasted image 20240225181330.png]]
- select * from msg where date_add(sendtime, interval 2 minute) > now();
- select * from msg where date_sub(now(), interval 2 minute) < sendtime;
复制代码
2.字符串函数
1.底子语法
- 注意:
- length函数返回字符串长度,以字节为单元
- 如果是多字节字符则盘算多个字节数;如果是单字节字符则算作一个字节
- 好比:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)
2.示例
- 获取emp表的ename列的字符集
- select charset(ename) from EMP;
复制代码 - 要求表现exam_result表中的信息,表现格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”
- select concat(name, '的语文是', chinese, '分,数学是', math, '分') as '分数' from student;
复制代码 - 求门生表中门生姓名占用的字节数
- select length(name), name from student;
复制代码 - 将EMP表中所闻名字中有S的替换成’上海’
- select replace(ename, 'S', '上海'), ename from EMP;
复制代码 - 截取EMP表中ename字段的第二个到第三个字符
- select substring(ename, 2, 2), ename from EMP;
复制代码 - 以首字母小写的方式表现所有员工的姓名
- select concat(lcase(substring(ename, 1, 1)), substring(ename,2)) from EMP;
复制代码 3.数学函数
1.底子语法
- 关于ceiling和floor
- C语言中的取整为**0向取证**
- ceiling是向+∞取整
- floor是向-∞取整
2.示例
- 绝对值
- 向上取整
- 向下取整
- 保留2位小数位数(小数四舍五入)
- select format(12.3456, 2);
复制代码 - 产生随机数
4.其他函数
- user() 查询当前用户
- **md5(str)**对一个字符串举行md5摘要,摘要后得到一个32位字符串
- select md5('admin')
- +----------------------------------+
- | md5('admin') |
- +----------------------------------+
- | 21232f297a57a5a743894a0e4a801fc3 |
- +----------------------------------+
复制代码 - **database()**表现当前正在使用的数据库
- **password()**函数,MySQL数据库使用该函数对用户加密
- select password('root');
- +-------------------------------------------+
- | password('root') |
- +-------------------------------------------+
- | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
- +-------------------------------------------+
复制代码 - ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
- 类似C语言中的三目运算符 a?b:c --> (val1 == null) ? val2 : val1
- select ifnull('abc', '123');
- +----------------------+
- | ifnull('abc', '123') |
- +----------------------+
- | abc |
- +----------------------+
- 1 row in set (0.01 sec)
- select ifnull(null, '123');
- +---------------------+
- | ifnull(null, '123') |
- +---------------------+
- | 123 |
- +---------------------+
- 1 row in set (0.00 sec)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |