日期
-
时间戳转换日期格式
FROM_UNIXTIME(unix_timestamp,format)
SELECT FROM_UNIXTIME(1635901200483/1000, '%Y-%m-%d %h:%i:%s') AS date;
-
字符串转日期
STR_TO_DATE(str,format)
SELECT STR_TO_DATE('2021-11-20 16:01:45', '%Y-%m-%d %H:%i:%s');
-
获取年、月、日、季度
YEAR(date)
MONTH(date)
DAY(date)
QUARTER(date)
SELECT YEAR(NOW()); SELECT MONTH(NOW()); SELECT DAY(NOW()); SELECT QUARTER(NOW());
-
日期范围统计
DATE_SUB(date,INTERVAL expr unit)
# 统计最近七天的数据 SELECT * FROM TABLE WHERE DATE_SUB( CURDATE(), INTERVAL 7 DAY ) <= DATE( column_time ); # 统计最近一个月的数据 SELECT * FROM ais_pos_all WHERE DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= DATE(gmt_created);
-
时间差值计算
使用TIMESTAMPDIFF函数,例如下述示例为计算end_time-start_time,并且以分钟为单位返回
TIMESTAMPDIFF( MINUTE, start_time, end_time )
字符串函数
-
CHAR_LENGTH(str)
计算字符串字符个数
SELECT CHAR_LENGTH("Hello World");
-
CONCAT(str1,str2,…)
字符串拼接
SELECT CONCAT("Hello", "World");
-
LEFT(s,n)、RIGHT(s,n)
前者返回字符串s从最左边开始的n个字符,后者返回字符串s从最右边开始的n个字符
SELECT LEFT("Hello World",1); SELECT RIGHT("Hello World",1);
-
TRIM([remstr FROM] str)
去除字符串前后空格
SELECT TRIM(" Hello World ");
条件判断函数
-
IF(expr,v1,v2)
如果expr是TRUE则返回v1,否则返回v2
SELECT IF(TRUE,"true","false");
-
IFNULL(v1,v2)
如果v1不为NULL,则返回v1,否则返回v2
SELECT IFNULL("null","not null")
常用统计查询函数
-
GROUP_CONCAT(expr)
单列数据转逗号拼接的字符串
SELECT GROUP_CONCAT(id) FROM table;
-
FIND_IN_SET(str,strlist)
由于in的性能效率并不高,该函数可代替in使用
SELECT FIND_IN_SET('1', '1,2,3')
参考资料: