mysql内置函数

时间

获取当前时间

mysql> select now(), curdate(), curtime();
+---------------------+------------+-----------+
| now()               | curdate()  | curtime() |
+---------------------+------------+-----------+
| 2022-05-30 01:44:23 | 2022-05-30 | 01:44:23  |
+---------------------+------------+-----------+

获取日期、时间指定部分的函数

mysql> select t, year(t), quarter(t), month(t), monthname(t), week(t)
    -> from (select '2022-05-01 23:58:59' as t) tmp_table;
+---------------------+---------+------------+----------+--------------+---------+
| t                   | year(t) | quarter(t) | month(t) | monthname(t) | week(t) |
+---------------------+---------+------------+----------+--------------+---------+
| 2022-05-01 23:58:59 |    2022 |          2 |        5 | May          |      18 |
+---------------------+---------+------------+----------+--------------+---------+

mysql> select t, dayname(t), dayofyear(t), dayofmonth(t), dayofweek(t), weekday(t)
    -> from (select '2022-05-01 23:58:59' as t) tmp_table;
+---------------------+------------+--------------+---------------+--------------+------------+
| t                   | dayname(t) | dayofyear(t) | dayofmonth(t) | dayofweek(t) | weekday(t) |
+---------------------+------------+--------------+---------------+--------------+------------+
| 2022-05-01 23:58:59 | Sunday     |          121 |             1 |            1 |          6 |
+---------------------+------------+--------------+---------------+--------------+------------+

mysql> select t, hour(t), minute(t), second(t)
    -> from (select '2022-05-01 23:58:59' as t) tmp_table;
+---------------------+---------+-----------+-----------+
| t                   | hour(t) | minute(t) | second(t) |
+---------------------+---------+-----------+-----------+
| 2022-05-01 23:58:59 |      23 |        58 |        59 |
+---------------------+---------+-----------+-----------+

DAYOFWEEK(DATE) 返回日期对应的一周中的索引,1表示周日,2表示周一
WEEK(DATE) 计算日期是一年中的第几周, 范围从1到52
WEEKDAY(DATE) 返回日期对应的工作日索引,0表示周一,1表示周二…6表示周六

日期计算

mysql> select t,
    -> datediff('2022-05-02','2022-05-01'),
    -> date_add(t,interval 1 year), date_add(t,interval 1 quarter), date_add(t,interval 1 month), date_add(t,interval 1 week),
    -> date_add(t, interval 1 hour), date_add(t,interval 1 minute)
    -> from (select '2022-05-01 00:00:00' as t) tmp_table;
+---------------------+-------------------------------------+-----------------------------+--------------------------------+------------------------------+-----------------------------+------------------------------+-------------------------------+
| t                   | datediff('2022-05-02','2022-05-01') | date_add(t,interval 1 year) | date_add(t,interval 1 quarter) | date_add(t,interval 1 month) | date_add(t,interval 1 week) | date_add(t, interval 1 hour) | date_add(t,interval 1 minute) |
+---------------------+-------------------------------------+-----------------------------+--------------------------------+------------------------------+-----------------------------+------------------------------+-------------------------------+
| 2022-05-01 00:00:00 |                                   1 | 2023-05-01 00:00:00         | 2022-08-01 00:00:00            | 2022-06-01 00:00:00          | 2022-05-08 00:00:00         | 2022-05-01 01:00:00          | 2022-05-01 00:01:00           |
+---------------------+-------------------------------------+-----------------------------+--------------------------------+------------------------------+-----------------------------+------------------------------+-------------------------------+

datediff(expr1,expr2): 两个日期相减,和时间无关
date_add(date,interval expr unit): 为日期增加一个时间间隔

字符串函数

mysql> select concat('a', 'b', 'c'), length('abc'),
    -> upper('abc'), lower('ABC'),
    -> ltrim(' abc'), rtrim('abc '), trim(' abc ');
+-----------------------+---------------+--------------+--------------+---------------+---------------+---------------+
| concat('a', 'b', 'c') | length('abc') | upper('abc') | lower('ABC') | ltrim(' abc') | rtrim('abc ') | trim(' abc ') |
+-----------------------+---------------+--------------+--------------+---------------+---------------+---------------+
| abc                   |             3 | ABC          | abc          | abc           | abc           | abc           |
+-----------------------+---------------+--------------+--------------+---------------+---------------+---------------+
mysql> select replace('abc', 'b', '+'), substring('abcd', 2, 2),
    -> strcmp('a', 'a'), strcmp('a', 'b'), strcmp('b', 'a');
+--------------------------+-------------------------+------------------+------------------+------------------+
| replace('abc', 'b', '+') | substring('abcd', 2, 2) | strcmp('a', 'a') | strcmp('a', 'b') | strcmp('b', 'a') |
+--------------------------+-------------------------+------------------+------------------+------------------+
| a+c                      | bc                      |                0 |               -1 |                1 |
+--------------------------+-------------------------+------------------+------------------+------------------+

STRCMP(S1,S2) 比较s1和s2,如果s1等于s2,返回0,如果s1小于s2,返回-1

ifnull 函数

select ifnull(a, '2'),  ifnull(b, '2')
FROM (SELECT NULL AS a, 1 AS b) tmp;

case函数

SELECT a, b, ( CASE a WHEN a IS NULL THEN b ELSE a END ) AS new
FROM (SELECT NULL AS a, 1 AS b) tmp;

系统函数

mysql> select version(), database();
+-----------+------------+
| version() | database() |
+-----------+------------+
| 8.0.27    | mysql      |
+-----------+------------+

其他

GROUP_CONCAT

select GROUP_CONCAT(MENU_ID) from t_sys_menu

FIND_IN_SET

select MENU_ID from t_sys_menu where FIND_IN_SET(MENU_CODE, @menu_code)

变量默认大小1024

SET GLOBAL group_concat_max_len=102400;
SET SESSION group_concat_max_len=102400;
set @menu_code = ‘testManage,memberManage,memberMgt,MEMPOINT,MEMCOPON’;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_26264237

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值