DATEDIFF 与 (w1.date = w2.date +1) 的区别? MySQL 语法

问题描述 投票:0回答:2

我正在使用 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/

mysql sql date datediff
2个回答
3
投票

这没有达到你想要的效果:

w2.RecordDate = w1.RecordDate + 1

因为您对日期使用数字算术,所以此表达式隐式将日期转换为数字,将

1
添加到其中之一,然后比较结果。根据具体日期,它可能“有时”有效,但这是一种错误的方法。举个例子,假设您的日期是 '2020-01-31',那么加 1 将产生整数
20200132

MySQL 理解日期算术,所以我会使用:

w2.RecordDate = w1.RecordDate + interval 1 day



0
投票
只需使用DATE_ADD(参数2,INTERVAL DAY)

© www.soinside.com 2019 - 2024. All rights reserved.