给定一个 Weather
字段及数据如下所示:
查询结果如下所示:
题解:
看到这道题的题意,根据题目中(查找与之前(昨天的)日期相比)我们首先想到的是日期之间差一天,即将表Weather定义为两个表A、B。
把A表看到昨日数据,B表看作今日数据。即A表的日期加1天等于B表的日期,B表的温度大于A表温度即可。
Sqlserver语法:
利用DATEADD函数(文末有介绍)
SELECT B.ID from Weather AS A
INNER JOIN Weather AS B ON A.Temperature<B.Temperature and DATEADD(DD,1,A.starttime) = B.starttime
DATEDIFF函数(文末有介绍)
SELECT B.ID from Weather AS A
INNER JOIN Weather AS B ON A.Temperature<B.Temperature and DATEDIFF(DAY,A.starttime,B.starttime) = 1
Mysql语法:
DATEDIFF函数(文末有介绍)
SELECT b.id FROM Weather AS A
INNER JOIN Weather AS B ON A.Temperature<b.Temperature and DATEDIFF(b.recordDate,a.recordDate) = 1
DATE_ADD函数(文末有介绍)
SELECT b.id FROM Weather AS A
INNER JOIN Weather AS B ON A.Temperature<b.Temperature and DATE_ADD(A.recordDate,INTERVAL 1 DAY ) = B.recordDate
Oracle语法:
round(to_number())函数,由于本机上没有Oracle,所有没有进行
select b.id from Weather AS A
INNER JOIN Weather AS B ON A.Temperature<b.Temperature and round(to_number(b.RecordDate-a.RecordDate))=1;
也可以直接在日期上加1,由于本机上没有Oracle,所有美欧测试
select b.id from Weather AS A
INNER JOIN Weather AS B ON A.Temperature<b.Temperature and b.RecordDate=a.RecordDate+1;
方法还有很多,不一一举例了。。。
Mysql DATE_ADD函数定义和用法
定义和用法
DATE_ADD() 函数向日期添加指定的时间间隔。
语法
DATE_ADD(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
type 参数可以是下列值:
Type 值 |
MICROSECOND |
SECOND |
MINUTE |
HOUR |
DAY |
WEEK |
MONTH |
QUARTER |
YEAR |
SECOND_MICROSECOND |
MINUTE_MICROSECOND |
MINUTE_SECOND |
HOUR_MICROSECOND |
HOUR_SECOND |
HOUR_MINUTE |
DAY_MICROSECOND |
DAY_SECOND |
DAY_MINUTE |
DAY_HOUR |
YEAR_MONTH |
Mysql DATEDIFF函数定义和用法
DATEDIFF() 函数返回两个日期之间的天数。
语法
DATEDIFF(date1,date2)
date1 和 date2 参数是合法的日期或日期/时间表达式。
注释:只有值的日期部分参与计算。
SQL Server 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 |
SQL Server DATEADD() 函数
定义和用法
DATEADD() 函数在日期中添加或减去指定的时间间隔。
语法
DATEADD(datepart,number,date)
date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
Mysql是前面的值减后面的值,而Sqlserver是后面的值减前面的值