DATEDIFF vs (w1.date = w2.date +1) 区别? MySQL 语法
DATEDIFF vs (w1.date = w2.date +1) difference? MySQL syntax
我正在使用 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
我正在使用 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