MySQL常用的时间函数,聚合函数,字符串函数,判断函数

时间函数

  • 获取当前日期,当前时间,当前日期+时间
select CURDATE(),CURTIME(),NOW();

示例:
在这里插入图片描述

以上的日期函数获得效果,在其它时间函数中也能活得,此处不列举,记住最简单,最好用的就行。

比如与NOW() 效果相同的函数有localtime()等4个函数。

但我认为程序员已经卷成这样了,谁还能记得茴字有4种写法?

  • 获取UTC时间
    (这个不是很常用,但是我在业务里碰到过几次)
select UTC_TIMESTAMP(), UTC_DATE(), UTC_TIME(), NOW();

示例:
> -- select UTC_TIMESTAMP(), UTC_DATE(), UTC_TIME(), NOW();
– 日期 增减 相应的天数,月数,秒数等

DATE_ADD(date,INTERVAL expr type) 增加
DATE_SUB(date, INTERVAL expr type) 减去
type常用取值:SECOND,MINUTE,HOUR,DAY,WEEK,MONTH

有时候MySQL会统计当前时间往前一个月,或者一周的数据,然后做成报表。

我遇到过数据库的时间,存的是毫秒数,在DATE_SUB()函数减去时间后,还要转化为时间戳,然后再乘以1000

-- 当前时间往前一个月,转化为秒,再乘以1000,转为毫秒数
select UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 MONTH))*1000

顺手把秒数转时间的函数FROM_UNIXTIME(秒数)提一下。

聚合函数

MySQL最常用分组聚合函数

关于group by的用法

字符串函数

常用的字符串函数有CONCAT(str1,str2,...)GROUP_CONCAT(expr)

创建测试数据:

CREATE TABLE `user` (
  `user_id` int NOT NULL,
  `user_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `hobby` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

INSERT INTO `user` VALUES ('1', 'Layman', '打LOL ');
INSERT INTO `user` VALUES ('1', 'Layman', '玩原神');
INSERT INTO `user` VALUES ('1', 'Layman', '摸鱼');
INSERT INTO `user` VALUES ('2', 'Alice', '学习');
INSERT INTO `user` VALUES ('2', 'Alice', '化妆');

数据如下:
在这里插入图片描述

CONCAT() 拼接,而 GROUP_CONCAT(expr) 拼接,通常与GROUP BY一起使用。

CONCAT() ,以 逗号 (,)进行分割

SQL:

select user_id,user_name,hobby,CONCAT(user_name,',',hobby)from user;

结果集:
在这里插入图片描述
可以看到,CONCAT() 函数针对一行的数据进行拼接。

如果,我想展示针对,在一行中展示Layman或者Alice的全部hobby,应该怎么办?

此时,可以使用 GROUP_CONCAT(expr)函数,但是要和GROUP BY一起使用。

GROUP_CONCAT() ,默认以 (,)进行分割

SQL:

select user_id,user_name,GROUP_CONCAT(hobby) from user GROUP BY user_id,user_name

结果集:
在这里插入图片描述
推荐博客:concat,concat_ws和group_concat函数的区别

判断函数

推荐博客:MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用

补充链接:

MySQL 中存储时间的最佳实践

MySQL 函数

MySQL 函数:日期、时间

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值