Mysql之时间函数DATEDIFF();

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. 方法三 使用子查询

三种比较

Mysql之时间函数DATEDIFF();_第1张图片
子查询效果比较差,是因为每次子查询都是全部查询。因此性能浪费较多

你可能感兴趣的:(mysql,mysql,数据库,database)