Sql笔试题第二天-查询与之前(昨天的)日期相比温度更高的所有日期

给定一个 Weather 表,编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 Id。

字段及数据如下所示:

查询结果如下所示:

题解:

      看到这道题的题意,根据题目中(查找与之前(昨天的)日期相比)我们首先想到的是日期之间差一天,即将表Weather定义为两个表A、B。

      把A表看到昨日数据,B表看作今日数据。即A表的日期加1天等于B表的日期,B表的温度大于A表温度即可。

Sqlserver语法:

利用DATEADD函数(文末有介绍)

SELECT B.ID  from Weather AS AINNER JOIN Weather AS B ON A.Temperature<B.Temperature and DATEADD(DD,1,A.starttime) = B.starttime

DATEDIFF函数(文末有介绍)​​​​​​​

SELECT B.ID  from Weather AS AINNER 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 AINNER JOIN Weather AS B ON A.Temperature<b.Temperature and DATEDIFF(b.recordDate,a.recordDate) = 1

DATE_ADD函数(文末有介绍)​​​​​​​

SELECT b.id FROM Weather AS AINNER 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 AINNER 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 AINNER 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是后面的值减前面的值

欢迎关注公众号Excel螺丝钉

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值