如何在MYSQL中获取日期的MIN和MAX()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在MYSQL中获取日期的MIN和MAX()相关的知识,希望对你有一定的参考价值。

我有这样的示例数据:

ID Val   Name        o_Dt                 o_gate      c_Dt             c_gate
1, 145, 'Test1', '2020-01-28 02:18:00', 'open'        NULL               NULL
2, 145, 'Test1', '2020-01-28 02:22:00', 'open'        NULL               NULL
3, 145, 'Test1', '2020-01-28 02:26:00', 'open'        NULL               NULL
4, 145, 'Test1', '2020-01-28 04:10:00', 'open'        NULL               NULL
5, 145, 'Test1', '2020-01-28 05:50:00', 'open'  '2020-01-28 05:56:00', 'close'
6, 145, 'Test2', '2020-01-28 07:36:00', 'open'  '2020-01-28 07:45:00'  'close'
7, 145, 'Test2', '2020-01-28 07:42:00', 'open'        NULL               NULL
8, 145, 'Test2', '2020-01-28 07:44:00', 'open'  '2020-01-28 07:47:00', 'close'

如何获得这样的输出:

ID Val   Name        o_Dt                 o_gate      c_Dt             c_gate
1, 145, 'Test1', '2020-01-28 02:18:00', 'open'   '2020-01-28 05:56:00' 'close'
6, 145, 'Test2', '2020-01-28 07:36:00', 'open'  '2020-01-28 07:45:00'  'close'
7, 145, 'Test2', '2020-01-28 07:42:00', 'open'  '2020-01-28 07:47:00', 'close'

我尝试过

MIN(o_Dt)OVER(PARTITION BY c_Dt )

但是它没有给出准确的结果。请建议我

答案

您可以使用一些最小和最大函数

select  min(id) ID, val, Name, min(o_Dt) o_Dt
      , min(o_gate) o_gate, max(c_Dt) c_Dt, max(c_gate) c_gate
from my_table 
group by vat, name 

以上是关于如何在MYSQL中获取日期的MIN和MAX()的主要内容,如果未能解决你的问题,请参考以下文章

使用 numpy.max/ numpy.min 作为时间戳值

MySQL MIN/MAX 所有行

如何在 sql 中设置变量并在选择查询中使用它来显示和执行对该变量的操作(MAX MIN)?

如何在 mysql 中正确设置 MIN 和 MAX?

在 MySQL 中选择 MIN 值后选择 MIN (MAX)

获取 min(date) AND max(date) 及其各自的标题