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
使用案例
编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 id 。
- 方法一 使用JOIN联结
SELECT w1.id FROM Weather AS w1 JOIN Weather AS w2 ON DATEDIFF(w1.recordDate, w2.recordDate) = 1 AND w1.temperature > w2.temperature;
- 方法二 使用WHERE查询
SELECT w1.id FROM Weather AS w1, Weather AS w2 WHERE DATEDIFF(w1.recordDate, w2.recordDate) = 1 AND w1.temperature > w2.temperature;
- 方法三 使用子查询
三种比较

子查询效果比较差,是因为每次子查询都是全部查询。因此性能浪费较多
本文详细介绍了MySQL中的时间函数DATEDIFF(),包括其基本用法、使用案例和不同比较方式。重点讲解了如何利用DATEDIFF()查询与前一天温度比较的数据,探讨了使用JOIN、WHERE子句和子查询的效率差异。
1048

被折叠的 条评论
为什么被折叠?



