数据库查询-查找与之前(昨天的)日期相比温度更高的所有日期的 Id

数据库查询-查找与之前(昨天的)日期相比温度更高的所有日期的 Id
答案:
1.与昨天对比的数据(如果昨天没有数据,则不输出)

select distinct(w.Id) as Id from Weather w,Weather w1 where TO_DAYS(w.RecordDate)-TO_DAYS(w1.RecordDate) between 0 and 1 and w.Temperature>w1.Temperature

2.离今天最近的有数据的时间(如果昨天没有数据,那么就找前天的数据,以此类推)

select w.Id from Weather w,Weather w1 where w1.RecordDate=(select max(w2.RecordDate) from Weather w2 where w.RecordDate>w2.RecordDate) and w.Temperature>w1.Temperature

资料参考:
SELECT DISTINCT 语句

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

关键词 DISTINCT 用于返回唯一不同的值。

语法:

SELECT DISTINCT 列名称 FROM 表名称
今天

select * from 表名 where to_days(时间字段名) = to_days(now());

昨天

SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1

7天

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)

近30天

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)

本月

SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, ‘%Y%m’ ) = DATE_FORMAT( CURDATE( ) , ‘%Y%m’ )

上一月

SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , ‘%Y%m’ ) , date_format( 时间字段名, ‘%Y%m’ ) ) =1