LeetCode 197. Rising Temperature 上升的温度(数据库)

题目:

Given a Weather table, write a SQL query to find all dates’ Ids with higher temperature compared to its previous (yesterday’s) dates.

Id(INT) RecordDate(DATE) Temperature(INT)
1 2015-01-01 10
2 2015-01-02 25
3 2015-01-03 20
4 2015-01-04 30

For example, return the following Ids for the above Weather table:

Id
2
4

解答:

select w1.Id from Weather w1,Weather w2 
where w1.Temperature>w2.Temperature 
and TO_DAYS(w1.RecordDate)-TO_DAYS(w2.RecordDate)=1;

其中用到了MySQL中的函数TO_DAYS(date),返回从0000年(公元1年)至当前日期data的总天数。

select w1.Id from Weather w1 inner join Weather w2 
on w1.Temperature>w2.Temperature 
and DATEDIFF(w1.RecordDate,w2.RecordDate)=1;

或者也可以使用DATEDIFF() 函数,DATEDIFF() 函数用来返回两个日期之间的时间。
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:

datepart 缩写
yy, yyyy
季度 qq, q
mm, m
年中的日 dy, y
dd, d
wk, ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns

你可能感兴趣的:(LeetCode)