SQL 最大日期相关问题
SQL max date related issue
我对 SQL 中的 max(date) 有点问题。
基本上问题是我必须检查 id 输入的最新日期是否超过 1 天,然后 return 该日期。
id| user_id| send_date
8 | 90 | 2016-10-21 14:31:14
| 10 | 90 | 2016-10-25 09:56:28
| 11 | 18 | 2016-10-22 09:56:28
| 12 | 19 | 2016-10-21 09:56:28
| 13 | 19 | 2016-10-23 09:56:28
| 13 | 20 | 2016-10-25 09:56:28
这是更长 SQL 的一部分(只是我遇到问题的部分):
SELECT max(h.send_date) as lastSent
FROM history h
WHERE (h.send_date < NOW() - INTERVAL 1 DAY);
现在发生的事情是,我没有选择最新输入日期早于 1 天的行,而是得到了早于 1 天的最新行,即使 table 中有更新的条目也是如此。
有谁知道如何更改它,以便 SQL 仅 return 比 24 小时大的最新日期 和 最新的 (由用户)在 table 中(在示例中,它必须 return 什么都没有,因为有一个条目小于 24 小时)?
稍微编辑了 table 示例。这是我需要得到的结果(user_ids 90 和 20 由于 2016-10-25 09:56:28 而被忽略):
18 | 2016-10-22 09:56:28
19 | 2016-10-23 09:56:28
对于聚合函数,您应该使用 having 而不是 where
SELECT max(h.send_date) as lastSent
FROM history h
having max(h.send_date ) < DATE_SUB(NOW() ,INTERVAL 1 DAY) ;
我对 SQL 中的 max(date) 有点问题。 基本上问题是我必须检查 id 输入的最新日期是否超过 1 天,然后 return 该日期。
id| user_id| send_date
8 | 90 | 2016-10-21 14:31:14
| 10 | 90 | 2016-10-25 09:56:28
| 11 | 18 | 2016-10-22 09:56:28
| 12 | 19 | 2016-10-21 09:56:28
| 13 | 19 | 2016-10-23 09:56:28
| 13 | 20 | 2016-10-25 09:56:28
这是更长 SQL 的一部分(只是我遇到问题的部分):
SELECT max(h.send_date) as lastSent
FROM history h
WHERE (h.send_date < NOW() - INTERVAL 1 DAY);
现在发生的事情是,我没有选择最新输入日期早于 1 天的行,而是得到了早于 1 天的最新行,即使 table 中有更新的条目也是如此。
有谁知道如何更改它,以便 SQL 仅 return 比 24 小时大的最新日期 和 最新的 (由用户)在 table 中(在示例中,它必须 return 什么都没有,因为有一个条目小于 24 小时)?
稍微编辑了 table 示例。这是我需要得到的结果(user_ids 90 和 20 由于 2016-10-25 09:56:28 而被忽略):
18 | 2016-10-22 09:56:28
19 | 2016-10-23 09:56:28
对于聚合函数,您应该使用 having 而不是 where
SELECT max(h.send_date) as lastSent
FROM history h
having max(h.send_date ) < DATE_SUB(NOW() ,INTERVAL 1 DAY) ;