SQL Server 每日一题--解析天气预报员
这道题主要考察 DATEDIFF 的用法, DATEDIFF 主要用于计算两个日期的差。通过题目可知我们可以通过将 weather 与自身相结合,并使用 DATEDIFF() 函数。那么这道题有两种主要的解决方法:
- 利用 from table_name1 , table_name2
- 利用 inner join
下面我们来看一下这两种方法的使用。
零、from table_name1 , table_name2
select w2.RecordDate from Weather as w1,Weather as w2
where datediff(dd,w1.RecordDate,w2.RecordDate)=1 and w1.Temperature<w2.Temperature
一、 inner join
select b.RecordDate from Weather a inner JOIN Weather b ON DATEDIFF(day, a.RecordDate, b.RecordDate)=1 and a.Temperature<b.Temperature
我个人建议使用第二种方法 inner join 来解决这个问题,因为第一种方法是一种过时的语法,另一方面根据我在实践中的经验来看,第一种方法的效率会低于第二种方法。