SQL函数
记录一个比较详尽的网址 (opens new window)
# 字符串处理
# FIND_IN_SET(string, string_list)
返回指定字符串在以逗号分隔的字符串列表中的位置
如果其中一个参数为
NULL
,则返回NULL
如果
string_list
为空字符串,返回0如果
string_list
中没有string
(逗号分隔的完整字符串),返回0否则返回
string
在字符串列表中第一次出现的次序
# LOCATE(substring, string, start)
LOCATE()函数返回字符串string
中第一次出现的子字符串substring
的位置,参数start
可选,搜索的起始位置。位置1是默认值。
如果在原始字符串中找不到子字符串,则此函数返回0。
此函数执行不区分大小写的搜索。
此功能等于POSITION()函数。
# SUBSTRING_INDEX(str, delim, count)
# 参数
- str 必需的。原字符串。
- delim 必需的。在原字符串中搜索的分隔符。
- count 必需的。分隔符出现的次数。如果 count 为负数,则从字符串尾部向前开始计数分隔符,返回分隔符之后的子字符串。
# 返回值
函数返回一个字符串中指定分隔符出现在指定次数之前的子字符串。
- 如果参数 count 等于 0, SUBSTRING_INDEX() 函数返回一个空字符串 '';
- 如果参数 count 为负数时, 则从字符串尾部向前开始计数分隔符,返回分隔符之后的子字符串。
- 如果任意一个参数为 NULL 时, SUBSTRING_INDEX() 函数将返回 NULL。
# JSON处理
# JSON_EXTRACT(json, path, ...)
# 参数
- json 必需的。一个 JSON 文档。
- path 必需的。您应该至少指定一个路径表达式。
# 返回值
返回 JSON
文档中由路径表达式匹配的所有的值。如果路径表达式匹配了一个值,则返回该值,如果路径表达式匹配了多个值,则返回一个包含了所有值的数组。
# 日期
# 转换
# datetime转字符串
DATE_FORMAT(updated_at,'%Y-%m-%d %H:%i') AS 'time'
DATE_FORMAT(updated_at, '%Y年%m月') AS timeGroup
2
3
format 中可采用的格式化符号 (opens new window)
比较常用的:
符号 | 说明 |
---|---|
%Y | 四位数字年份 |
%y | 两位数字年份 |
%M | 月份名称 (January..December) |
%m | 两位数字月份 (00..12) |
%D | 带有英语前缀的月份中的每天 (0th, 1st, 2nd, 3rd, …) |
%d | 月份中的每天的两位数字表示 (00..31) |
%H | 小时 (00..23) |
%h | 小时 (01..12) |
%I | 小时 (01..12) |
%i | 分钟 (00..59) |
%S | 秒 (00..59) |
%s | 秒 (00..59) |
# 时间戳转字符串
FROM_UNIXTIME(unix_timestamp[, format])
返回Unix时间标记的一个字符串,根据format格式化。如果format为空默认会使用%Y-%m-%d %H:%i:%s的格式
# datetime转时间戳
UNIX_TIMESTAMP(CURRENT_TIMESTAMP())
# datetime转date
date(CURRENT_TIMESTAMP())
# 获取时间
# 当前时间
- curdate()
- curtime()
- CURRENT_TIMESTAMP()
- now()
# 时间计算
# 增减
DATE_ADD(date, INTERVAL value unit)
例如:
-- 明天
DATE_SUB(curdate(),INTERVAL -1 DAY)
-- 昨天
DATE_SUB(curdate(),INTERVAL 1 DAY)
-- 前一小时
date_sub(now(), interval 1 hour)
-- 前30分钟
date_add(now(),interval -30 minute)
2
3
4
5
6
7
8
unit
常用值有: MICROSECOND
, SECOND
, MINUTE
, HOUR
, DAY
, WEEK
, MONTH
, QUARTER
, YEAR
等等。
# 间隔
TIMESTAMPDIFF(unit, datetime1, datetime2)
返回两个日期之间的间隔(前者减后者)
unit
可用值有: MICROSECOND
, SECOND
, MINUTE
, HOUR
, DAY
, WEEK
, MONTH
, QUARTER
, YEAR
.
# 其他函数
# CAST()
CAST(expr AS data_type)
等同于 CONVERT(expr, type)
。
CAST()
函数将任何类型的值转换为具有指定类型的值。目标类型可以是以下类型之一:BINARY
,CHAR
,DATE
,DATETIME
,TIME
,DECIMAL
,SIGNED
,UNSIGNED
。