数据库查询-查找与之前(昨天的)日期相比温度更高的所有日期的 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