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。