mysql中日期处理函数TIMESTAMPDIFF与DATEDIFF

先来说下DATEDIFF函数,这个函数主要就是用来返回两个日期之间的天数。

mysql> SELECT DATEDIFF('2021-08-12','2021-08-13');
+-------------------------------------+
| DATEDIFF('2021-08-12','2021-08-13') |
+-------------------------------------+
|                                  -1 |
+-------------------------------------+
1 row in set (0.00 sec)

mysql>

这里注意可以注意到DATEDIFF函数是前面的参数减去后面的参数。

而TIMESTAMPDIFF函数对于时间的处理这块则比DATEDIFF使用的多,因为它的时间间隔支持很多类型.
如下所示:
TIMESTAMPDIFF(interval,datetime1,datetime2)

其中的interval可以支持一下类型:

  • FRAC_SECOND。表示间隔是毫秒(注意mysql中低版本目前不支持此函数,可以手动使用SECONDS参数然后将结果*1000)
  • SECOND 秒
  • MINUTE 分钟
  • HOUR 小时
  • DAY 天
  • WEEK 星期
  • MONTH 月
  • QUARTER 季度
  • YEAR 年

在这里插入图片描述
与DATEDIFF函数有所不同TIMESTAMPDIFF是后面的参数减去前面的参数。

来看一道leetcode上使用DATEDIFF函数应用的题

在这里插入图片描述

在这里插入图片描述

题目中提取关键信息可以发现有2个条件
1.后一天的日期与前一天比
2.后一天的温度比前一天要高

select b.id
from Weather as a,Weather as b
where b.Temperature > a.Temperature 
and DATEDIFF(b.recordDate ,a.recordDate ) = 1 ;

这里如果不使用日期函数的话可能有些麻烦,当然用窗口函数也可以解决.

select 
Id
from 
(
select Id,RecordDate,Temperature,
lag(RecordDate,1,9999-99-99) over (order by RecordDate) yd,
lag(Temperature,1,999) over(order by RecordDate ) yt
from Weather 
)tmp
where Temperature >yt
and datediff(RecordDate,yd)=1

关于LAG函数可以参考https://www.begtut.com/mysql/mysql-lag-function.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值