玩转Mysql系列 - 第10篇:常用的几十个函数详解

MySQL 字符串函数

| 函数名称 | 作 用 |

| — | — |

| length | 计算字符串长度函数,返回字符串的字节长度 |

| concat | 合并字符串函数,返回结果为连接参数产生的字符串,参数可以使一个或多个 |

| insert | 替换字符串函数 |

| lower | 将字符串中的字母转换为小写 |

| upper | 将字符串中的字母转换为大写 |

| left | 从左侧字截取符串,返回字符串左边的若干个字符 |

| right | 从右侧字截取符串,返回字符串右边的若干个字符 |

| trim | 删除字符串左右两侧的空格 |

| replace | 字符串替换函数,返回替换后的新字符串 |

| substr 和 substring | 截取字符串,返回从指定位置开始的指定长度的字符换 |

| reverse | 字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串 |

length:返回字符串直接长度

返回值为字符串的字节长度,使用 uft8(UNICODE 的一种变长字符编码,又称万国码)编码字符集时,一个汉字是 3 个字节,一个数字或字母是一个字节。

mysql> select length(‘javacode2018’),length(‘路人甲Java’),length(‘路人’);

±-----------------------±------------------------±-----------------+

| length(‘javacode2018’) | length(‘路人甲Java’)    | length(‘路人’)   |

±-----------------------±------------------------±-----------------+

|                     12 |                      13 |                6 |

±-----------------------±------------------------±-----------------+

1 row in set (0.00 sec)

concat:合并字符串

CONCAT(sl,s2,…) 函数返回结果为连接参数产生的字符串,或许有一个或多个参数。

若有任何一个参数为 NULL,则返回值为 NULL。若所有参数均为非二进制字符串,则结果为非二进制字符串。若自变量中含有任一二进制字符串,则结果为一个二进制字符串。

mysql> select concat(‘路人甲’,‘java’),concat(‘路人甲’,null,‘java’);

±---------------------------±--------------------------------+

| concat(‘路人甲’,‘java’)    | concat(‘路人甲’,null,‘java’)    |

±---------------------------±--------------------------------+

| 路人甲java                 | NULL                            |

±---------------------------±--------------------------------+

1 row in set (0.00 sec)

insert:替换字符串

INSERT(s1,x,len,s2) 返回字符串 s1,子字符串起始于 x 位置,并且用 len 个字符长的字符串代替 s2。

x的值从1开始,第一个字符的x=1,若 x 超过字符串长度,则返回值为原始字符串。

假如 len 的长度大于其他字符串的长度,则从位置 x 开始替换。

若任何一个参数为 NULL,则返回值为 NULL。

mysql> select

->   insert(‘路人甲Java’, 2, 4, ‘**’) AS col1,

->   insert(‘路人甲Java’, -1, 4,‘**’) AS col2,

->   insert(‘路人甲Java’, 3, 20,‘**’) AS col3;

±--------±--------------±---------+

| col1    | col2          | col3     |

±--------±--------------±---------+

| 路va  | 路人甲Java    | 路人   |

±--------±--------------±---------+

1 row in set (0.00 sec)

lower:将字母转换成小写

LOWER(str) 可以将字符串 str 中的字母字符全部转换成小写。

mysql> select lower(‘路人甲JAVA’);

±-----------------------+

| lower(‘路人甲JAVA’)    |

±-----------------------+

| 路人甲java             |

±-----------------------+

1 row in set (0.00 sec)

upper:将字母转换成大写

UPPER(str) 可以将字符串 str 中的字母字符全部转换成大写。

mysql> select upper(‘路人甲java’);

±-----------------------+

| upper(‘路人甲java’)    |

±-----------------------+

| 路人甲JAVA             |

±-----------------------+

1 row in set (0.00 sec)

left:从左侧截取字符串

LEFT(s,n) 函数返回字符串 s 最左边的 n 个字符,s=1表示第一个字符。

mysql> select left(‘路人甲JAVA’,2),left(‘路人甲JAVA’,10),left(‘路人甲JAVA’,-1);

±------------------------±-------------------------±-------------------------+

| left(‘路人甲JAVA’,2)    | left(‘路人甲JAVA’,10)    | left(‘路人甲JAVA’,-1)    |

±------------------------±-------------------------±-------------------------+

| 路人                    | 路人甲JAVA               |                          |

±------------------------±-------------------------±-------------------------+

1 row in set (0.00 sec)

right:从右侧截取字符串

RIGHT(s,n) 函数返回字符串 s 最右边的 n 个字符。

mysql> select right(‘路人甲JAVA’,1),right(‘路人甲JAVA’,10),right(‘路人甲JAVA’,-1);

±-------------------------±--------------------------±--------------------------+

| right(‘路人甲JAVA’,1)    | right(‘路人甲JAVA’,10)    | right(‘路人甲JAVA’,-1)    |

±-------------------------±--------------------------±--------------------------+

| A                        | 路人甲JAVA                |                           |

±-------------------------±--------------------------±--------------------------+

1 row in set (0.00 sec)

trim:删除字符串两侧空格

TRIM(s) 删除字符串 s 两侧的空格。

mysql> select ‘[   路人甲Java   ]’,concat(‘[’,trim(’   路人甲Java   ‘),’]');

±----------------------±--------------------------------------------+

| [   路人甲Java   ]    | concat(‘[’,trim(’   路人甲Java   ‘),’]')    |

±----------------------±--------------------------------------------+

| [   路人甲Java   ]    | [路人甲Java]                                |

±----------------------±--------------------------------------------+

1 row in set (0.00 sec)

replace:字符串替换

REPLACE(s,s1,s2) 使用字符串 s2 替换字符串 s 中所有的字符串 s1。

substr 和 substring:截取字符串

substr(str,pos)

substr(str from pos)

substr(str,pos,len)

substr(str from pos for len)

substr()是substring()的同义词。

没有len参数的形式是字符串str从位置pos开始返回一个子字符串。

带有len参数的形式是字符串str从位置pos开始返回长度为len的子字符串。

使用FROM的形式是标准的SQL语法。

也可以对pos使用负值,在这种情况下,子字符串的开头是字符串末尾的pos字符,而不是开头。在这个函数的任何形式中pos可以使用负值。

对于所有形式的substring(),从中提取子串的字符串中第一个字符的位置被认为是1。

/** 第三个字符之后的子字符串:inese **/

SELECT substring(‘chinese’, 3);

/** 倒数第三个字符之后的子字符串:ese **/

SELECT substring(‘chinese’, -3);

/** 第三个字符之后的两个字符:in **/

SELECT substring(‘chinese’, 3, 2);

/** 倒数第三个字符之后的两个字符:es **/

SELECT substring(‘chinese’, -3, 2);

/** 第三个字符之后的子字符串:inese **/

SELECT substring(‘chinese’ FROM 3);

/** 倒数第三个字符之后的子字符串:ese **/

SELECT substring(‘chinese’ FROM -3);

/** 第三个字符之后的两个字符:in **/

SELECT substring(‘chinese’ FROM 3 FOR 2);

/** 倒数第三个字符之后的两个字符:es **/

SELECT substring(‘chinese’ FROM -3 FOR 2);

reverse:反转字符串

REVERSE(s) 可以将字符串 s 反转,返回的字符串的顺序和 s 字符串的顺序相反。

mysql> select reverse(‘路人甲Java’);

±-------------------------+

| reverse(‘路人甲Java’)    |

±-------------------------+

| avaJ甲人路               |

±-------------------------+

1 row in set (0.00 sec)

MySQL 日期和时间函数

| 函数名称 | 作 用 |

| — | — |

| curdate 和 current_date | 两个函数作用相同,返回当前系统的日期值 |

| curtime 和 current_time | 两个函数作用相同,返回当前系统的时间值 |

| now 和 sysdate | 两个函数作用相同,返回当前系统的日期和时间值 |

| unix_timestamp | 获取UNIX时间戳函数,返回一个以 UNIX 时间戳为基础的无符号整数 |

| from_unixtime | 将 UNIX 时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数 |

| month | 获取指定日期中的月份 |

| monthname | 获取指定日期中的月份英文名称 |

| dayname | 获取指定曰期对应的星期几的英文名称 |

| dayofweek | 获取指定日期是一周中是第几天,返回值范围是1~7,1=周日 |

| week | 获取指定日期是一年中的第几周,返回值的范围是否为 0〜52 或 1〜53 |

| dayofyear | 获取指定曰期是一年中的第几天,返回值范围是1~366 |

| dayofmonth | 获取指定日期是一个月中是第几天,返回值范围是1~31 |

| year | 获取年份,返回值范围是 1970〜2069 |

| time_to_sec | 将时间参数转换为秒数 |

| sec_to_time | 将秒数转换为时间,与TIME_TO_SEC 互为反函数 |

| date_add 和 adddate | 两个函数功能相同,都是向日期添加指定的时间间隔 |

| date_sub 和 subdate | 两个函数功能相同,都是向日期减去指定的时间间隔 |

| addtime | 时间加法运算,在原始时间上添加指定的时间 |

| subtime | 时间减法运算,在原始时间上减去指定的时间 |

| datediff | 获取两个日期之间间隔,返回参数 1 减去参数 2 的值 |

| date_format | 格式化指定的日期,根据参数返回指定格式的值 |

| weekday | 获取指定日期在一周内的对应的工作日索引 |

curdate 和 current_date:两个函数作用相同,返回当前系统的日期值

CURDATE() 和 CURRENT_DATE() 函数的作用相同,将当前日期按照“YYYY-MM-DD”或“YYYYMMDD”格式的值返回,具体格式根据函数用在字符串或数字语境中而定,返回的date类型。

mysql> select curdate(),current_date(),current_date()+1;

±-----------±---------------±-----------------+

| curdate()  | current_date() | current_date()+1 |

±-----------±---------------±-----------------+

| 2019-09-17 | 2019-09-17     |         20190918 |

±-----------±---------------±-----------------+

1 row in set (0.00 sec)

curtime 和 current_time:获取系统当前时间

CURTIME() 和 CURRENT_TIME() 函数的作用相同,将当前时间以“HH:MM:SS”或“HHMMSS”格式返回,具体格式根据函数用在字符串或数字语境中而定,返回time类型。

mysql> select curtime(),current_time(),current_time()+1;

±----------±---------------±-----------------+

| curtime() | current_time() | current_time()+1 |

±----------±---------------±-----------------+

| 16:11:25  | 16:11:25       |           161126 |

±----------±---------------±-----------------+

1 row in set (0.00 sec)

now 和 sysdate:获取当前时间日期

NOW() 和 SYSDATE() 函数的作用相同,都是返回当前日期和时间值,格式为“YYYY-MM-DD HH:MM:SS”或“YYYYMMDDHHMMSS”,具体格式根据函数用在字符串或数字语境中而定,返回datetime类型。

mysql> select now(),sysdate();

±--------------------±--------------------+

| now()               | sysdate()           |

±--------------------±--------------------+

| 2019-09-17 16:13:28 | 2019-09-17 16:13:28 |

±--------------------±--------------------+

1 row in set (0.00 sec)

unix_timestamp:获取UNIX时间戳

UNIX_TIMESTAMP(date) 若无参数调用,返回一个无符号整数类型的 UNIX 时间戳('1970-01-01 00:00:00’GMT之后的秒数)。

mysql> select unix_timestamp(),unix_timestamp(now()),now(),unix_timestamp(‘2019-09-17 12:00:00’);

±-----------------±----------------------±--------------------±--------------------------------------+

| unix_timestamp() | unix_timestamp(now()) | now()               | unix_timestamp(‘2019-09-17 12:00:00’) |

±-----------------±----------------------±--------------------±--------------------------------------+

|       1568710893 |            1568710893 | 2019-09-17 17:01:33 |                            1568692800 |

±-----------------±----------------------±--------------------±--------------------------------------+

1 row in set (0.00 sec)

from_unixtime:时间戳转日期

FROM_UNIXTIME(unix_timestamp[,format]) 函数把 UNIX 时间戳转换为普通格式的日期时间值,与 UNIX_TIMESTAMP () 函数互为反函数。

有2个参数:

unix_timestamp:时间戳(秒)

format:要转化的格式 比如“”%Y-%m-%d“” 这样格式化之后的时间就是 2017-11-30

可以有的形式:

| 格式 | 说明 |

| — | — |

| %M | 月名字(January~December) |

| %W | 星期名字(Sunday~Saturday) |

| %D | 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等) |

| %Y | 年, 数字, 4 位 |

| %y | 年, 数字, 2 位 |

| %a | 缩写的星期名字(Sun~Sat) |

| %d | 月份中的天数, 数字(00~31) |

| %e | 月份中的天数, 数字(0~31) |

| %m | 月, 数字(01~12) |

| %c | 月, 数字(1~12) |

| %b | 缩写的月份名字(Jan~Dec) |

| %j | 一年中的天数(001~366) |

| %H | 小时(00~23) |

| %k | 小时(0~23) |

| %h | 小时(01~12) |

| %I(i的大写) | 小时(01~12) |

| %l(L的小写) | 小时(1~12) |

| %i | 分钟, 数字(00~59) |

| %r | 时间,12 小时(hh:mm:ss [AP]M) |

| %T | 时间,24 小时(hh:mm:ss) |

| %S | 秒(00~59) |

| %s | 秒(00~59) |

| %p | AM或PM |

| %W | 一个星期中的天数英文名称(Sunday~Saturday) |

| %w | 一个星期中的天数(0=Sunday ~6=Saturday) |

| %U | 星期(0~52), 这里星期天是星期的第一天 |

| %u | 星期(0~52), 这里星期一是星期的第一天 |

| %% | 输出% |

mysql> select from_unixtime(1568710866),from_unixtime(1568710866,‘%Y-%m-%d %H:%h:%s’);

±--------------------------±----------------------------------------------+

| from_unixtime(1568710866) | from_unixtime(1568710866,‘%Y-%m-%d %H:%h:%s’) |

±--------------------------±----------------------------------------------+

| 2019-09-17 17:01:06       | 2019-09-17 17:05:06                           |

±--------------------------±----------------------------------------------+

1 row in set (0.00 sec)

month:获取指定日期的月份

MONTH(date) 函数返回指定 date 对应的月份,范围为 1~12。

mysql> select month(‘2017-12-15’),month(now());

±--------------------±-------------+

| month(‘2017-12-15’) | month(now()) |

±--------------------±-------------+

|                  12 |            9 |

±--------------------±-------------+

1 row in set (0.00 sec)

monthname:获取指定日期月份的英文名称

MONTHNAME(date) 函数返回日期 date 对应月份的英文全名。

mysql> select monthname(‘2017-12-15’),monthname(now());

±------------------------±-----------------+

| monthname(‘2017-12-15’) | monthname(now()) |

±------------------------±-----------------+

| December                | September        |

±------------------------±-----------------+

1 row in set (0.00 sec)

dayname:获取指定日期的星期名称

DAYNAME(date) 函数返回 date 对应的工作日英文名称,例如 Sunday、Monday 等。

mysql> select now(),dayname(now());

±--------------------±---------------+

| now()               | dayname(now()) |

±--------------------±---------------+

| 2019-09-17 17:13:08 | Tuesday        |

±--------------------±---------------+

1 row in set (0.00 sec)

dayofweek:获取日期对应的周索引

DAYOFWEEK(d) 函数返回 d 对应的一周中的索引(位置)。1 表示周日,2 表示周一,……,7 表示周六。这些索引值对应于ODBC标准。

mysql> select now(),dayofweek(now());

±--------------------±-----------------+

| now()               | dayofweek(now()) |

±--------------------±-----------------+

| 2019-09-17 17:14:21 |                3 |

±--------------------±-----------------+

1 row in set (0.00 sec)

week:获取指定日期是一年中的第几周

WEEK(date[,mode]) 函数计算日期 date 是一年中的第几周。WEEK(date,mode) 函数允许指定星期是否起始于周日或周一,以及返回值的范围是否为 0~52 或 1~53。

WEEK函数接受两个参数:

  • date是要获取周数的日期。
  • mode是一个可选参数,用于确定周数计算的逻辑。它允许您指定本周是从星期一还是星期日开始,返回的周数应在052之间或053之间。

如果忽略mode参数,默认情况下WEEK函数将使用default_week_format系统变量的值。

要获取default_week_format变量的当前值,请使用SHOW VARIABLES语句如下:

mysql> SHOW VARIABLES LIKE ‘default_week_format’;

±--------------------±------+

| Variable_name       | Value |

±--------------------±------+

| default_week_format | 0     |

±--------------------±------+

1 row in set, 1 warning (0.00 sec)

在我们的服务器中,default_week_format的默认值为0,下表格说明了mode参数如何影响WEEK函数:

| 模式 | 一周的第一天 | 范围 |

| — | — | — |

| 0 | 星期日 | 0-53 |

| 1 | 星期一 | 0-53 |

| 2 | 星期日 | 1-53 |

| 3 | 星期一 | 1-53 |

| 4 | 星期日 | 0-53 |

| 5 | 星期一 | 0-53 |

| 6 | 星期日 | 1-53 |

| 7 | 星期一 | 1-53 |

上表中“今年有4天以上”表示:

  • 如果星期包含1月1日,并且在新的一年中有4天或更多天,那么这周是第1周。

  • 否则,这一周的数字是前一年的最后一周,下周是第1周。

mysql> select now(),week(now());

±--------------------±------------+

| now()               | week(now()) |

±--------------------±------------+

| 2019-09-17 17:20:28 |          37 |

±--------------------±------------+

1 row in set (0.00 sec)

dayofyear:获取指定日期在一年中的位置

DAYOFYEAR(d) 函数返回 d 是一年中的第几天,范围为 1~366。

mysql> select now(),dayofyear(now()),dayofyear(‘2019-01-01’);

±--------------------±-----------------±------------------------+

| now()               | dayofyear(now()) | dayofyear(‘2019-01-01’) |

±--------------------±-----------------±------------------------+

| 2019-09-17 17:22:00 |              260 |                       1 |

±--------------------±-----------------±------------------------+

1 row in set (0.00 sec)

dayofmonth:获取指定日期在一个月的位置

DAYOFMONTH(d) 函数返回 d 是一个月中的第几天,范围为 1~31。

mysql> select now(),dayofmonth(now()),dayofmonth(‘2019-01-01’);

±--------------------±------------------±-------------------------+

| now()               | dayofmonth(now()) | dayofmonth(‘2019-01-01’) |

±--------------------±------------------±-------------------------+

| 2019-09-17 17:23:09 |                17 |                        1 |

±--------------------±------------------±-------------------------+

1 row in set (0.00 sec)

year:获取年份

YEAR() 函数可以从指定日期值中来获取年份值。

mysql> select now(),year(now()),year(‘2019-01-02’);

±--------------------±------------±-------------------+

| now()               | year(now()) | year(‘2019-01-02’) |

±--------------------±------------±-------------------+

| 2019-09-17 17:28:10 |        2019 |               2019 |

±--------------------±------------±-------------------+

1 row in set (0.00 sec)

time_to_sec:将时间转换为秒值

TIME_TO_SEC(time) 函数返回将参数 time 转换为秒数的时间值,转换公式为“小时 ×3600+ 分钟 ×60+ 秒”。

mysql> select time_to_sec(‘15:15:15’),now(),time_to_sec(now());

±------------------------±--------------------±-------------------+

| time_to_sec(‘15:15:15’) | now()               | time_to_sec(now()) |

±------------------------±--------------------±-------------------+

|                   54915 | 2019-09-17 17:30:44 |              63044 |

±------------------------±--------------------±-------------------+

1 row in set (0.00 sec)

sec_to_time:将秒值转换为时间格式

SEC_TO_TIME(seconds) 函数返回将参数 seconds 转换为小时、分钟和秒数的时间值。

mysql> select sec_to_time(100),sec_to_time(10000);

±-----------------±-------------------+

| sec_to_time(100) | sec_to_time(10000) |

±-----------------±-------------------+

| 00:01:40         | 02:46:40           |

±-----------------±-------------------+

1 row in set (0.00 sec)

date_add和adddate:向日期添加指定时间间隔

DATE_ADD(date,INTERVAL expr type)

date:参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。

type:参数可以是下列值

| Type 值 |

| — |

| MICROSECOND |

| SECOND |

| MINUTE |

| HOUR |

| DAY |

| WEEK |

| MONTH |

| QUARTER |

| YEAR |

| SECOND_MICROSECOND |

| MINUTE_MICROSECOND |

| MINUTE_SECOND |

| HOUR_MICROSECOND |

| HOUR_SECOND |

| HOUR_MINUTE |

| DAY_MICROSECOND |

| DAY_SECOND |

| DAY_MINUTE |

| DAY_HOUR |

| YEAR_MONTH |

mysql> select date_add(‘2019-01-01’,INTERVAL 10 day),adddate(‘2019-01-01 16:00:00’,interval 100 SECOND);

±---------------------------------------±---------------------------------------------------+

| date_add(‘2019-01-01’,INTERVAL 10 day) | adddate(‘2019-01-01 16:00:00’,interval 100 SECOND) |

±---------------------------------------±---------------------------------------------------+

| 2019-01-11                             | 2019-01-01 16:01:40                                |

±---------------------------------------±---------------------------------------------------+

1 row in set (0.00 sec)

mysql> select date_add(‘2019-01-01’,INTERVAL -10 day),adddate(‘2019-01-01 16:00:00’,interval -100 SECOND);

±----------------------------------------±----------------------------------------------------+

| date_add(‘2019-01-01’,INTERVAL -10 day) | adddate(‘2019-01-01 16:00:00’,interval -100 SECOND) |

±----------------------------------------±----------------------------------------------------+

| 2018-12-22                              | 2019-01-01 15:58:20                                 |

±----------------------------------------±----------------------------------------------------+

1 row in set (0.00 sec)

date_sub和subdate:日期减法运算

DATE_SUB(date,INTERVAL expr type)

date:参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。

type的类型和date_add中的type一样。

mysql> select date_sub(‘2019-01-01’,INTERVAL 10 day),subdate(‘2019-01-01 16:00:00’,interval 100 SECOND);

±---------------------------------------±---------------------------------------------------+

| date_sub(‘2019-01-01’,INTERVAL 10 day) | subdate(‘2019-01-01 16:00:00’,interval 100 SECOND) |

±---------------------------------------±---------------------------------------------------+

| 2018-12-22                             | 2019-01-01 15:58:20                                |

±---------------------------------------±---------------------------------------------------+

1 row in set (0.00 sec)

mysql> select date_sub(‘2019-01-01’,INTERVAL -10 day),subdate(‘2019-01-01 16:00:00’,interval -100 SECOND);

±----------------------------------------±----------------------------------------------------+

| date_sub(‘2019-01-01’,INTERVAL -10 day) | subdate(‘2019-01-01 16:00:00’,interval -100 SECOND) |

±----------------------------------------±----------------------------------------------------+

| 2019-01-11                              | 2019-01-01 16:01:40                                 |

±----------------------------------------±----------------------------------------------------+

1 row in set (0.00 sec)

addtime:时间加法运算

ADDTIME(time,expr) 函数用于执行时间的加法运算。添加 expr 到 time 并返回结果。

其中:time 是一个时间或日期时间表达式,expr 是一个时间表达式。

mysql> select addtime(‘2019-09-18 23:59:59’,‘0:1:1’), addtime(‘10:30:59’,‘5:10:37’);

±---------------------------------------±------------------------------+

| addtime(‘2019-09-18 23:59:59’,‘0:1:1’) | addtime(‘10:30:59’,‘5:10:37’) |

±---------------------------------------±------------------------------+

| 2019-09-19 00:01:00                    | 15:41:36                      |

±---------------------------------------±------------------------------+

1 row in set (0.00 sec)

subtime:时间减法运算

SUBTIME(time,expr) 函数用于执行时间的减法运算。

函数返回 time。expr 表示的值和格式 time 相同。time 是一个时间或日期时间表达式, expr 是一个时间。

mysql> select subtime(‘2019-09-18 23:59:59’,‘0:1:1’),subtime(‘10:30:59’,‘5:12:37’);

±---------------------------------------±------------------------------+

| subtime(‘2019-09-18 23:59:59’,‘0:1:1’) | subtime(‘10:30:59’,‘5:12:37’) |

±---------------------------------------±------------------------------+

| 2019-09-18 23:58:58                    | 05:18:22                      |

±---------------------------------------±------------------------------+

1 row in set (0.00 sec)

datediff:获取两个日期的时间间隔

DATEDIFF(date1,date2) 返回起始时间 date1 和结束时间 date2 之间的天数。date1 和 date2 为日期或 date-and-time 表达式。计算时只用到这些值的日期部分。

mysql> select datediff(‘2017-11-30’,‘2017-11-29’) as col1, datediff(‘2017-11-30’,‘2017-12-15’) as col2;

±-----±-----+

| col1 | col2 |

±-----±-----+

|    1 |  -15 |

±-----±-----+

1 row in set (0.00 sec)

date_format:格式化指定的日期

DATE_FORMAT(date,format) 函数是根据 format 指定的格式显示 date 值。

DATE_FORMAT() 函数接受两个参数:

date:是要格式化的有效日期值format:是由预定义的说明符组成的格式字符串,每个说明符前面都有一个百分比字符(%)。

format:格式和上面的函数from_unixtime中的format一样,可以参考上面的。

mysql> select date_format(‘2017-11-30’,‘%Y%m%d’) as col0,now() as col1, date_format(now(),‘%Y%m%d%H%i%s’) as col2;

±---------±--------------------±---------------+

| col0     | col1                | col2           |

±---------±--------------------±---------------+

| 20171130 | 2019-09-17 17:56:12 | 20190917175612 |

±---------±--------------------±---------------+

1 row in set (0.00 sec)

weekday:获取指定日期在一周内的索引位置

WEEKDAY(date) 返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

mysql> select now(),weekday(now());

±--------------------±---------------+

| now()               | weekday(now()) |

±--------------------±---------------+

| 2019-09-17 18:01:34 |              1 |

±--------------------±---------------+

1 row in set (0.00 sec)

mysql> select now(),dayofweek(now());

±--------------------±-----------------+

| now()               | dayofweek(now()) |

±--------------------±-----------------+

| 2019-09-17 18:01:34 |                3 |

±--------------------±-----------------+

1 row in set (0.00 sec)

MySQL 聚合函数

| 函数名称 | 作用 |

| — | — |

| max | 查询指定列的最大值 |

| min | 查询指定列的最小值 |

| count | 统计查询结果的行数 |

| sum | 求和,返回指定列的总和 |

| avg | 求平均值,返回指定列数据的平均值 |

MySQL 流程控制函数

| 函数名称 | 作用 |

| — | — |

| if | 判断,流程控制 |

| ifnull | 判断是否为空 |

| case | 搜索语句 |

if:判断

IF(expr,v1,v2)

当 expr 为真是返回 v1 的值,否则返回 v2

mysql> select if(1<2,1,0) c1,if(1>5,‘√’,‘×’) c2,if(strcmp(‘abc’,‘ab’),‘yes’,‘no’) c3;

±—±—±----+

| c1 | c2 | c3  |

±—±—±----+

|  1 | ×  | yes |

±—±—±----+

1 row in set (0.00 sec)

ifnull:判断是否为空

IFNULL(v1,v2):v1为空返回v2,否则返回v1。

mysql> select ifnull(null,‘路人甲Java’),ifnull(‘非空’,‘为空’);

±-----------------------------±--------------------------+

| ifnull(null,‘路人甲Java’)    | ifnull(‘非空’,‘为空’)     |

±-----------------------------±--------------------------+

| 路人甲Java                   | 非空                      |

±-----------------------------±--------------------------+

1 row in set (0.00 sec)

case:搜索语句,类似于java中的if…else if…else

类似于java中的if…else if…else

有2种写法

方式1:

CASE  <表达式>

WHEN <值1> THEN <操作>

WHEN <值2> THEN <操作>

ELSE <操作>

END CASE;

方式2:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

我还通过一些渠道整理了一些大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

新鲜出炉的蚂蚁金服面经,熬夜整理出来的答案,已有千人收藏

还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。

新鲜出炉的蚂蚁金服面经,熬夜整理出来的答案,已有千人收藏

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
甲Java’)    | ifnull(‘非空’,‘为空’)     |

±-----------------------------±--------------------------+

| 路人甲Java                   | 非空                      |

±-----------------------------±--------------------------+

1 row in set (0.00 sec)

case:搜索语句,类似于java中的if…else if…else

类似于java中的if…else if…else

有2种写法

方式1:

CASE  <表达式>

WHEN <值1> THEN <操作>

WHEN <值2> THEN <操作>

ELSE <操作>

END CASE;

方式2:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-LIFzBccY-1713756069566)]

[外链图片转存中…(img-ZZ4gOILi-1713756069567)]

[外链图片转存中…(img-VjJGrDbB-1713756069567)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

我还通过一些渠道整理了一些大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

[外链图片转存中…(img-khabGfCr-1713756069567)]

还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。

[外链图片转存中…(img-ef89sU9Z-1713756069568)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值