Mysql之时间函数DATEDIFF();

本文详细介绍了MySQL中的时间函数DATEDIFF(),包括其基本用法、使用案例和不同比较方式。重点讲解了如何利用DATEDIFF()查询与前一天温度比较的数据,探讨了使用JOIN、WHERE子句和子查询的效率差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DATEDIFF() 返回两个日期之间的时间差

DATEDIFF(datepart,startdate,enddate) 返回enddate和startdate差值,可正可负,根据开始和结束的时间关系,其中,datepart是返回的类型,可以是天、周、月等。
startdate,enddate 是返回 datetime值或日期格式字符串的表达式。

使用
SELECT NOW(); -- 2022-05-17 15:26:18
SELECT CURDATE();-- 2022-05-17
SELECT CURTIME();-- 15:26:18

SELECT DATEDIFF(CURDATE(), '2022-5-16') ,DATEDIFF(NOW(), '2022-5-19') ; -- 1  -2
使用案例

191.上升的温度

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

  1. 方法一 使用JOIN联结
SELECT w1.id FROM Weather AS w1  JOIN  Weather AS w2 ON DATEDIFF(w1.recordDate, w2.recordDate) = 1 AND w1.temperature > w2.temperature;

  1. 方法二 使用WHERE查询
SELECT w1.id FROM Weather AS w1, Weather AS w2 WHERE DATEDIFF(w1.recordDate, w2.recordDate) = 1 AND w1.temperature > w2.temperature;
  1. 方法三 使用子查询
三种比较


子查询效果比较差,是因为每次子查询都是全部查询。因此性能浪费较多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值