1. 常用函数
1. 日期函数
常用日期函数:
-- 返回当前日期
select curdate(); # 2024-05-06
-- 返回当前时间
select curtime(); # 21:41:58
-- 返回当前日期加时间
select now(); # 2024-05-06 21:40:53
-- 获取指定date的年份
select year('2024-05-06 21:40:53'); # 2024
-- 获取指定date的月份
select month('2024-05-06 21:40:53'); # 5
-- 获取指定date的年份
select day('2024-05-06 21:40:53'); # 6
-- 返回一个日期/时间值加上一个时间间隔expr后的时间值
select date_add('2024-05-06',interval 1 year ); # 2025-05-06
select date_add('2024-05-06',interval 1 month ); # 2024-06-06
select date_add('2024-05-06',interval 1 day ); # 2024-05-07
-- timestampdiff(单位 ,date1,date2) 返回俩个日期之间的差值
# 单位有:
# 1、YEAR 年
# 2、QUARTER 季度
# 3、MONTH 月
# 4、WEEk 星期
# 5、DAY 天
# 6、HOUR 小时
# 7、MINUTE 分钟
# 8、SECOND 秒
# 9、FRAC_SECOND 毫秒
select timestampdiff(day ,'2024-05-06','2024-06-06'); # 31
-- DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
select DATE_FORMAT(NOW(),'%Y-%m-%d'); # 2024-05-06
select DATE_FORMAT(NOW(),'%d %b %Y %T'); # 06 May 2024 22:02:33
-- 返回一个日期/时间值加上一个时间间隔expr后的时间值
select date_sub('2024-05-06',interval 1 day ); # 2024-05-05
2. 字符串函数函数
-- 截取字符串
sub_str('2024-08-22',1,4) ----> '2024'
【注】索引是从1开始,截取4个字符
---------------------------------------------------
-- 字符串拼接
concat_ws(',',delivery_time,customer_id) -- 将两列的数据按‘,’拼接成一列
concat(delivery_time,customer_id) -- 字符串拼接
2. 行转列(转置)
行转列的常规做法是,group by+sum(if())【或count(if())】
1. 行转列
问题描述:
代码实现:
-- 行转列
-- 建表
create table table2(year int,month int ,amount double) CHARACTER SET utf8 COLLATE utf8_bin;
insert into table2 values
(1991,1,1.1),
(1991,2,1.2),
(1991,3,1.3),
(1991,4,1.4),
(1992,1,2.1),
(1992,2,2.2),
(1992,3,2.3),
(1992,4,2.4);
-- 实现
select year,
sum(if(month = 1,amount,0)) as m1,
sum(if(month