给定一个 Weather

字段及数据如下所示:

sql server 前一天数据 日期取前一天 sql中某一个日期的前一天_sql

查询结果如下所示:

sql server 前一天数据 日期取前一天 sql中某一个日期的前一天_sql_02

题解:

      看到这道题的题意,根据题目中(查找与之前(昨天的)日期相比)我们首先想到的是日期之间差一天,即将表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是后面的值减前面的值