MYSQL 常用字符串函数 和 时间函数详解

一、字符串函数

1、​CONCAT(str1, str2, ...) 拼接多个字符串。

sql 复制代码
SELECT CONCAT('Hello', ' ', 'World');  -- 输出 'Hello World'

2、SUBSTRING(str, start, length)​​ 或 ​SUBSTR() 截取字符串。

sql 复制代码
SELECT SUBSTRING('MySQL', 3, 2);  -- 输出 'SQ'

3、LENGTH(str)​​ 与 ​CHAR_LENGTH(str) 获取字符串的长度

LENGTH():返回字节数(受字符集影响);CHAR_LENGTH():返回字符数。

sql 复制代码
SELECT LENGTH('中国'), CHAR_LENGTH('中国'); -- 输出 6(UTF-8)和 2

4、UPPER(str) / LOWER(str) 转换大小写

sql 复制代码
SELECT UPPER('mysql');  -- 输出 'MYSQL'

5、REPLACE(str, old_str, new_str) 替换字符串

sql 复制代码
SELECT REPLACE('apple pie', 'apple', 'cherry');  -- 输出 'cherry pie'

6、TRIM([LEADING|TRAILING|BOTH] 'char' FROM str) 去除首尾指定字符(默认去空格)

sql 复制代码
SELECT TRIM('   MySQL   ');  -- 输出 'MySQL'  去除空格字符
  • TRIM() #删除前后空格
  • RTRIM() #删除字符串结尾空格
  • LTRIM() #删除字符串起始空格

BOTH删除指定的首尾字符

sql 复制代码
SELECT TRIM(BOTH 'a' FROM 'applea'); --结果pple

LEADING 删除指定的首字符

sql 复制代码
SELECT TRIM(LEADING 'a' FROM 'applea'); --结果pplea

TRAILING删除指定的尾字符

sql 复制代码
SELECT TRIM(TRAILING 'a' FROM 'applea'); --结果apple

二、时间函数

1、NOW() 返回当前日期和时间,格式 YYYY-MM-DD HH:MM:SS

sql 复制代码
SELECT NOW(); -- 2023-10-25 14:30:45

2、CURDATE() 返回当前日期,格式 YYYY-MM-DD

sql 复制代码
SELECT CURDATE(); -- 2023-10-25

3、CURTIME() 返回当前时间,格式 HH:MM:SS

sql 复制代码
SELECT CURTIME(); -- 14:30:45

4、DATE() 仅存储日期​(年-月-日),不包含时间。 YYYY-MM-DD(例如:2023-10-05)。

sql 复制代码
CREATE TABLE example (event_date DATE);
INSERT INTO example VALUES ('2023-10-05');

5、​TIME 仅存储时间​(时:分:秒),可以表示一天中的时间点或时间间隔。

格式 HH:MM:SS(例如:15:30:00)。支持微秒:HH:MM:SS[.fraction](例如:15:30:00.123456)

sql 复制代码
CREATE TABLE example (duration TIME);
INSERT INTO example VALUES ('15:30:00'), ('-05:00:00');

6、DATETIME() 存储日期 + 时间​(年-月-日 时:分:秒)。

格式​:YYYY-MM-DD HH:MM:SS(例如:2023-10-05 15:30:00)。支持微秒:YYYY-MM-DD HH:MM:SS[.fraction]。

sql 复制代码
CREATE TABLE example (event_time DATETIME);
INSERT INTO example VALUES ('2023-10-05 15:30:00');

7、常用日期格式化符号

符号 含义
%Y 四位年份
%m 两位月份 (01-12)
%d 两位日期 (01-31)
%H 24小时制小时 (00-23)
%i: 分钟 (00-59)
%s: 秒 (00-59)
%W: 星期全名 (Sunday-Saturday)
%a: 缩写星期 (Sun-Sat)
%T 24小时制时间(等价于 %H:%i:%s)
%r 12小时制时间(等价于 %h:%i:%s %p)
%p 上午/下午标记(AM/PM)

8、日期/时间格式化,将日期转换成字符串格式

  • DATE_FORMAT(date, format): 格式化日期,日期和时间部分
sql 复制代码
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 2023-10-25 14:30:45
SELECT DATE_FORMAT(NOW(), '%W, %M %e, %Y'); -- Wednesday, October 25, 2023
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H时%i分'); -- 2023年10月25日 14时30分
  • TIME_FORMAT(time, format): 格式化时间(仅时间)(用法同 DATE_FORMAT)
sql 复制代码
SELECT TIME_FORMAT('2023-10-01 08:30:00', '%T'); 
-- 输出: 08:30:00

9、STR_TO_DATE(str, format) 将字符串解析为日期

sql 复制代码
SELECT STR_TO_DATE('25,10,2023', '%d,%m,%Y'); -- 2023-10-25

10、日期计算

  • DATE_ADD(date, INTERVAL expr unit): 日期加法
sql 复制代码
SELECT DATE_ADD(NOW(), INTERVAL 7 DAY); -- 当前时间加7天
SELECT DATE_ADD(NOW(), INTERVAL 3 MONTH); -- 当前时间加3个月
  • DATE_SUB(date, INTERVAL expr unit): 日期减法
sql 复制代码
SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR); -- 当前时间减1小时
  • DATEDIFF(date1, date2): 计算两个日期之间的天数差
sql 复制代码
SELECT DATEDIFF('2023-10-31', '2023-10-25'); -- 6

其中unit 可选值如下YEAR、MONTH、DAY、HOUR、MINUTE、SECOND

11、提取日期部分

  • YEAR(date): 提取年份

  • MONTH(date): 提取月份

  • DAY(date): 提取日期

  • HOUR(time): 提取小时

  • MINUTE(time): 提取分钟

  • SECOND(time): 提取秒

  • EXTRACT(unit FROM date)

sql 复制代码
SELECT EXTRACT(YEAR_MONTH FROM '2023-10-01'); -- 202310
mysql> SELECT EXTRACT(YEAR_MONTH FROM NOW());
+--------------------------------+
| EXTRACT(YEAR_MONTH FROM NOW()) |
+--------------------------------+
|                         202504 |
+--------------------------------+
1 row in set (0.01 sec)

mysql>

mysql> SELECT EXTRACT(YEAR_MONTH FROM NOW());
+--------------------------------+
| EXTRACT(YEAR_MONTH FROM NOW()) |
+--------------------------------+
|                         202504 |
+--------------------------------+
1 row in set (0.01 sec)

mysql>
相关推荐
数据知道34 分钟前
PostgreSQL 故障排查:如何找出数据库中最耗时的 SQL 语句
数据库·sql·postgresql
qq_124987075334 分钟前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
枷锁—sha35 分钟前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Coder_Boy_39 分钟前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Gain_chance1 小时前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
此生只爱蛋1 小时前
【Redis】主从复制
数据库·redis
马猴烧酒.1 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库
天天爱吃肉82182 小时前
跟着创意天才周杰伦学新能源汽车研发测试!3年从工程师到领域专家的成长秘籍!
数据库·python·算法·分类·汽车
大巨头2 小时前
sql2008 数据库分页语句
数据库
m0_715575342 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python