共通機能
1.文字列関数
関数 | 説明 |
---|---|
CONCAT(S1、S2、…、Sn) | 接続パラメータ文字列は文字列です |
INSERT(文字列、x、y、文字列) | x番目の位置から始まる文字列strとy文字の長い部分文字列をinstrに置き換えます |
LOWER(文字列) | 小文字 |
UPPER(文字列) | 資本 |
LEFT(文字列、x) | 文字列の左端のx文字を返します |
RIGHT(文字列、x) | 文字列の右端のx文字を返します |
LPAD(文字列、n、パッド) | strの左端を、長さがn文字になるまで文字列パッドで埋めます。 |
RPAD(文字列、n、パッド) | strの右端を、長さがn文字になるまで文字列パッドで埋めます。 |
Ltrim(文字列) | 文字列strの左側のスペースを削除します |
RTRIM(文字列) | 文字列strの右側のスペースを削除します |
REPEAT(文字列、x) | strをx回繰り返した結果を返します |
REPLACE(文字列、a、b) | 文字列str内のすべての文字列aを文字列bに置き換えます |
STRCMP(s1、s2) | 文字列を比較する |
TRIM(文字列) | 文字列の最後と行の先頭のスペースを削除します |
SUBSTRING(文字列、x、y) | 位置str xからy文字の部分文字列を返します |
2.数値関数
関数 | 説明 |
---|---|
ABS(x) | 絶対値 |
CEIL(X) | xより大きい最小の整数を返します |
フロア(x) | xより小さい最大の整数を返します |
MOD(x、y) | x / yの係数を返します |
RAND() | 0から1までの乱数を返します |
ROUND(x、y) | xの小数点以下の桁数を丸めた値を返します |
TRUNCATE(x、y) | 数値xの結果を小数点以下y桁に切り捨てて返します(四捨五入されません)。 |
mysql> select round(1.1),round(1.1,2),round(1,2),round(1.1,3);
+------------+--------------+------------+--------------+
| round(1.1) | round(1.1,2) | round(1,2) | round(1.1,3) |
+------------+--------------+------------+--------------+
| 1 | 1.10 | 1 | 1.100 |
+------------+--------------+------------+--------------+
1 row in set (0.00 sec)
mysql> select round(1.235,2),truncate(1.235,2);
+----------------+-------------------+
| round(1.235,2) | truncate(1.235,2) |
+----------------+-------------------+
| 1.24 | 1.23 |
+----------------+-------------------+
1 row in set (0.00 sec)
3.日付と時刻の関数
関数 | 説明 |
---|---|
CURDATE() | 現在の日付を返す |
呪い() | 現在の時刻を返す |
今() | 現在の日付と時刻を返します |
UNIX_TIMESTAMP(日付) | 日付日付のUNIXタイムスタンプを返します |
FROM_UNIXTIME | UNIXタイムスタンプの日付値を返します |
WEEK(日付) | その年の最初の数週間として日付を返す |
YEAR(日付) | 日付の年を返します |
HOUR(日付) | 返回 time 的小时值 |
MINUTE(date) | 返回 time 的分钟值 |
MONTHNAME(date) | 返回 date 的月份名 |
DATE_FORMAT(date,fmt) | 返回按字符串 fmt 格式化日期 date 值 |
DATE_ADD(date,INTERVAL,expr type) | 返回上一个日期或时间值加上一个时间间隔的时间值 |
DATEDIFF(expr,expr2) | 返回起始时间 expr 和结束时间 expr2 之间的天数 |
-
DATE_FORMAT(date,fmt) 函数
按照 fmt 格式化日期 date 的值,可用的格式符如下:
格式符 说明 %S 或 %s 两位数字形式的秒 %i 两位数字形式的分 %H 两位数字形式的小时,24 小时 %h 和 %I(大写 i) 两位数字形式的小时,12 小时 %k 数字形式的小时,24 小时 %l(小写 l) 数字形式的小时,12 小时 %T 24 小时的时间形式 %r 12 小时的时间形式 %p AM 或 PM %W 一周中每一天的名称 %a 一周中每一天名称的缩写 %d 两位数字表示月中的天数 %e 数字形式表示月中的天数 %D 英文后缀表示月中的天数 %w 以数字形式表示周中的天数 %j 3 位数字表示年中的天数 %U 周,其中 Sunday 为周中第一天 %u 周,其中 Monday 为周中第一天 %M 月名 %b 缩写的月名 %m 两位数字表示的月份 %c 数字表示的月份 %Y 4 位数字表示的年份 %y 两位数字表示的年份 %% 直接值 “%” mysql> select now(),DATE_FORMAT(now(),'%M,%D,%Y'),DATE_FORMAT(now(),'%M,%D,%Y,%H,%i,%s'); +---------------------+-------------------------------+----------------------------------------+ | now() | DATE_FORMAT(now(),'%M,%D,%Y') | DATE_FORMAT(now(),'%M,%D,%Y,%H,%i,%s') | +---------------------+-------------------------------+----------------------------------------+ | 2020-08-12 16:41:35 | August,12th,2020 | August,12th,2020,16,41,35 | +---------------------+-------------------------------+----------------------------------------+ 1 row in set (0.00 sec)
-
DATE_ADD(date,INTERVAL,expr type) 函数
其中 INTERVAL 是间隔类型关键字,expr 是一个表达式,这个表达式对应后面的类型,type 是间隔类型,MySQL 提供了 13 种间隔类型:
表达式类型 描述 格式 HOUR 小时 hh MINUTE 分 mm SECOND 秒 ss YEAR 年 YY MONTH 月 MM DAY 日 DD YEAR_MONTH 年和月 YY-MM DAY_HOUR 日和小时 DD hh DAY_MINUTE 日和分钟 DD hh:mm DAY_SECOND 日和分钟 DD hh:mm:ss HOUR_MINUTE 小时和分 hh:mm HOUR_SECOND 小时和秒 hh:mm:ss MINUTE_SECOND 分和秒 mm:ss 第一列返回当前日期,第二列返回距离当前日期 31 天后的日期,第三列返回距离当前日期一年两个月后的日期:
mysql> select now() current,date_add(now(),INTERVAL 31 day) after31days,date_add(now(),INTERVAL '1_2' year_month) after_oneyear_twomonth; +---------------------+---------------------+------------------------+ | current | after31days | after_oneyear_twomonth | +---------------------+---------------------+------------------------+ | 2020-08-12 16:52:32 | 2020-09-12 16:52:32 | 2021-10-12 16:52:32 | +---------------------+---------------------+------------------------+ 1 row in set (0.00 sec)
同样可以使用负数,返回之前的时间:
mysql> select now() current,date_add(now(),INTERVAL -31 day) after31days,date_add(now(),INTERVAL '-1_-2' year_month) after_oneyear_twomonth; +---------------------+---------------------+------------------------+ | current | after31days | after_oneyear_twomonth | +---------------------+---------------------+------------------------+ | 2020-08-12 16:53:38 | 2020-07-12 16:53:38 | 2019-06-12 16:53:38 | +---------------------+---------------------+------------------------+ 1 row in set (0.00 sec)
-
DATEDIFF(expr,expr2) 函数
计算两个日期之间相差的天数:
mysql> select DATEDIFF('2008-08-08',now()); +------------------------------+ | DATEDIFF('2008-08-08',now()) | +------------------------------+ | -4387 | +------------------------------+ 1 row in set (0.00 sec)
4、流程函数
函数 | 说明 |
---|---|
IF(value,t f) | 如果 value 为真,返回 t;否则返回 f |
IFNULL(value1,value2) | 如果 value1 不为空,返回 value1,否则返回 value2 |
CASE WHEN [value1] THEN[result1]…ELSE [default]END | 如果 value1 是真,返回 result1,否则返回 default |
CASE [expr] WHEN [value1] THEN[result1]… ELSE [default] END | 如果 expr 等于 value1,返回 result1,否则返回 default |
5、其他常用函数
函数 | 说明 |
---|---|
DATABASE() | 返回当前数据库名 |
VERSION() | 返回当前数据库版本 |
USER() | 返回当前登陆者名字 |
INET_ATON(IP) | 返回 IP 地址的数字表示 |
INET_NTOA(num) | 返回数字代表的 IP 地址 |
PASSWORD(str) | 返回字符串 str 的加密密码 |
MD5() | 返回字符串 str 的 MD5 值 |