mysql max() datediff() group by

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql max() datediff() group by相关的知识,希望对你有一定的参考价值。

两个表:一个客户表;一个回访表,
查找:顾客最后一次回访时间和现在时间差(30天没有回访),同时显示一次都没有回访过的客户
以下是我自己写的出现错误 请高手给解决一下
SELECT c.customid,MAX(h.huifangtime)AS htime FROM hi_custom AS c
LEFT JOIN hi_huifang AS h ON h.customid=c.customid
WHERE DATEDIFF(NOW(),htime)>=30 GROUP BY c.customid
[Err] 1054 - Unknown column 'htime' in 'where clause'

参考技术A htime是别名,在mysql中不支持直接用别名,
SELECT
c.customid,
case when h.HFSJ is null then -1 -- 代表没回防
when h.HFSJ is not null then DATEDIFF(NOW(),h.HFSJ)
AS htime
FROM
hi_custom AS c
LEFT JOIN
(select customid,MAX(huifangtime) asHFSJ from hi_huifang group by customid) h
ON h.customid=c.customid

一个特定日期和一列之间的 datediff MySQL

【中文标题】一个特定日期和一列之间的 datediff MySQL【英文标题】:datediff MySQL between one particular date and a column 【发布时间】:2021-12-12 05:39:26 【问题描述】:

我在 dd-mm-yyyy 中有如下日期列:

| xdate |
----------
| 30-07-2001 |
| 21-09-2003 |
| 16-06-2020 |

如何计算从 '2021-11-10' 到 xdate 列的特定日期之间的日期差异并以年、月和日表示?

【问题讨论】:

【参考方案1】:

dd-mm-yyyy 不是有效的 MySQL 日期时间格式。我建议您始终将日期存储在日期时间类型中。

对于您的情况,一个简单的解决方案可能不是大数据性能的最佳解决方案:

SELECT DATEDIFF('2021-11-10',date_format(str_to_date(xdate,'%d-%m-%Y'),'%Y-%m-%d')) AS days
FROM test_tbl;

演示:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/127

您可以尝试 MONTHS 和 YEARS:

SELECT TIMESTAMPDIFF(MONTH, date_format(str_to_date(xdate, '%d-%m-%Y'), '%Y-%m-%d'),'2021-11-10' ) AS months
FROM test_tbl;


SELECT TIMESTAMPDIFF(YEAR, date_format(str_to_date(xdate, '%d-%m-%Y'), '%Y-%m-%d'),'2021-11-10' ) AS years
FROM test_tbl;

演示:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/129

有关 DATEDIFF 的更多信息:

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_datediff

如果你想要 MONTH , YEAR ,你可以使用 TIMESTAMPDIFF ...... https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_timestampdiff

【讨论】:

以上是关于mysql max() datediff() group by的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 常用函数(28)- datediff 函数

Mysql 常用函数(28)- datediff 函数

在 MySQL 语句中使用 datediff

使 Redshift 的 DATEDIFF 表现为 MySQL 的 TIMESTAMPDIFF

求高人介绍MySQL的datediff函数

(MySQL) 使用 DATEDIFF 函数时遇到问题