我正在使用 MySQL 解决 SQL 数据库问题。目标是找到所有满足今天比昨天温暖的 ID。我将向您展示我的原始代码,它通过了 3 个测试用例中的 2 个,然后是满足所有 3 个测试用例的修改后的代码。
这两者在功能上有什么区别?是MySQL的事,leetcode的事,还是其他的事?
原创
SELECT DISTINCT w2.id
FROM weather w1, weather w2
WHERE w2.RecordDate = w1.RecordDate +1 AND w2.temperature > w1.temperature
已修订
SELECT DISTINCT w2.id
FROM weather w1, weather w2
WHERE DATEDIFF(w2.RecordDate,w1.RecordDate) =1 AND w2.temperature > w1.temperature
唯一的区别是使用
DATEDIFF
或使用 w2.recordDate = w1.recordDate + 1
。
我想知道,这两者有什么区别?
编辑:这是 LC 问题 https://leetcode.com/problems/rising-Temperature/
这没有达到你想要的效果:
w2.RecordDate = w1.RecordDate + 1
因为您对日期使用数字算术,所以此表达式隐式将日期转换为数字,将
1
添加到其中之一,然后比较结果。根据具体日期,它可能“有时”有效,但这是一种错误的方法。举个例子,假设您的日期是 '2020-01-31'
,那么加 1 将产生整数 20200132
。MySQL 理解日期算术,所以我会使用:
w2.RecordDate = w1.RecordDate + interval 1 day
只需使用DATE_ADD(参数2,INTERVAL DAY)