简单分析
- 本题核心:筛选出当日比昨日温度高的日期,可以推广为解决昨日同比增长***之类的问题;
- 使用函数:datediff、timestampdiff、date_add之类函数,可能还有其他方式可以解决,欢迎补充
- 表联结:使用join和left join并无差别,可选用join
解决方案
方案一:使用date_add函数,本方法主要用加减思维建立连接,主要注意函数参数用法;
SELECT a.id from weather a JOIN weather b
on DATE_ADD(a.recordDate,INTERVAL -1 DAY) = b.recordDate
and
a.temperature > b.temperature;
方案二:使用datediff,求两个日期之间差值,本方法直接传入两个日期,主要是后面判断的天数需要确定,前大日期,后小日期;
SELECT a.id from weather a JOIN weather b
on DATEDIFF(a.recordDate,b.recordDate) = 1
and
a.temperature > b.temperature;
方案三:使用timestampdiff,是看见一个大佬补充的一个方案,这个函数需要注意的是,前面是小日期,后面是大日期;
SELECT a.id from weather a JOIN weather b
on TIMESTAMPDIFF(DAY,b.recordDate,a.recordDate) = 1
and
a.temperature > b.temperature;
结论
- 补充求时间差的函数timestampdiff、datediff;
- 注意每个函数的用法,前后参数分别是什么