MySQL语句计算同比,时间格式为年月的情况

本文讲解了如何使用SQL计算日期费用的同比增长,并强调了时间格式处理技巧,包括DATE_ADD、CONCAT和date_format函数的应用。通过实例演示了如何在LeetCode复习中遇到的时间问题解决方案。
摘要由CSDN通过智能技术生成

首先这里以计算费用的同比为例

建表 :表名为 date
建表
说明:(1)time为时间,是varchar类型 (2)cost是金额,varchar类型或date类型

先上SQL语句

同比查询SQL语句
结果
结果

解释:

其中这句SQL
(select CONCAT(DATE_ADD(time,INTERVAL 1 YEAR),“”) as time ,cost from date)
的执行结果为:
在这里插入图片描述

一、
DATE_ADD是将time列的时间进行加的一个操作,
INTERVAL 1 YEAR:是将time列的时间加一年,
CONCAT:连接,是将加一年生成的新时间,拼接一个空字符串,形成一个新的时间字符串,起别名为 time
二、
通过left join自连接形成虚拟表 别名为t3
t3.time = t1.time 满足此条件的时间只有2021-05-05
此时 t1.cost = 3 并且 t3.cost = 2
在回到上面的SQL语句就可以计算同比了

注意:

这里有一个坑,时间格式必须精确到日期,如果是年月的形式(2021-05)会出错,当然解决办法也有,那就是将time(2021-05)使用CONCAT 随意拼接一个日期变为(2021-05-01)

pinjie

而如何将拼接完的日期变回年月的格式呢?可以使用date_format
拼接

最终结果

结果


个人LeetCode复习,可以在idea中随机获取一道题,再也不需要打开LeetCode官网了

LeetCode复习

在这里插入图片描述

喜欢的朋友随手给个 star 呀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值