如何在mysql中比较时间和日期列?

如何在mysql中比较时间和日期列?,mysql,sql,Mysql,Sql,我有一个关于事件发生频率的表格,我希望看到每个事件的第一次和最后一次发生。假设我有三列,事件id、事件时间和事件日期。我知道这样的查询是错误的,并且给出了错误的结果: SELECT event_id, MIN(event_time), MAX(event_time), MIN(event_date), MAX(event_date) FROM events_table WHERE 1 GROUP BY event_id 有没有办法不用合并两列就

我有一个关于事件发生频率的表格,我希望看到每个事件的第一次和最后一次发生。假设我有三列,事件id、事件时间和事件日期。我知道这样的查询是错误的,并且给出了错误的结果:

SELECT 
    event_id, 
    MIN(event_time), 
    MAX(event_time), 
    MIN(event_date), 
    MAX(event_date)
FROM events_table
WHERE 1
GROUP BY event_id

有没有办法不用合并两列就可以做到这一点?

请更准确地说明列类型(日期、时间、varchar…),以及您是否可以按天或任何时候查找事件的发生情况

您可以将这两列连接起来,然后将其最小化、最大化

以下假设事件时间如“08:03:21”和事件日期(“2014-01-30”)曾经发生:

SELECT id, event_id, min(concat(event_date,' ',event_time)),max(concat(event_date,' ',event_time))
from t_test
group by event_id

如果您想每天检查第一次和最后一次事件,只需按天分组并从concat()中删除日期。

请更准确地说明列类型(日期、时间、varchar..),以及是否按天或任何时候查找事件的发生

您可以将这两列连接起来,然后将其最小化、最大化

以下假设事件时间如“08:03:21”和事件日期(“2014-01-30”)曾经发生:

SELECT id, event_id, min(concat(event_date,' ',event_time)),max(concat(event_date,' ',event_time))
from t_test
group by event_id

如果您想每天检查第一次和最后一次事件,只需按天分组并从concat()中删除日期。

请更准确地说明列类型(日期、时间、varchar..),以及是否按天或任何时候查找事件的发生

您可以将这两列连接起来,然后将其最小化、最大化

以下假设事件时间如“08:03:21”和事件日期(“2014-01-30”)曾经发生:

SELECT id, event_id, min(concat(event_date,' ',event_time)),max(concat(event_date,' ',event_time))
from t_test
group by event_id

如果您想每天检查第一次和最后一次事件,只需按天分组并从concat()中删除日期。

请更准确地说明列类型(日期、时间、varchar..),以及是否按天或任何时候查找事件的发生

您可以将这两列连接起来,然后将其最小化、最大化

以下假设事件时间如“08:03:21”和事件日期(“2014-01-30”)曾经发生:

SELECT id, event_id, min(concat(event_date,' ',event_time)),max(concat(event_date,' ',event_time))
from t_test
group by event_id
如果您想检查每天发生的第一次和最后一次事件,只需按天分组,并从concat()中删除日期。

您忘记了

这是另一种方法。在我的MySQL上测试

SELECT a1.event_id, 
       Min(Concat(a2.event_date, ' ', a2.event_time)), 
       Max(Concat(a2.event_date, ' ', a2.event_time)) 
FROM   event_log a1 
       INNER JOIN event_log a2 
               ON a2.event_id = a1.event_id 
GROUP  BY a1.event_id 
你忘了

这是另一种方法。在我的MySQL上测试

SELECT a1.event_id, 
       Min(Concat(a2.event_date, ' ', a2.event_time)), 
       Max(Concat(a2.event_date, ' ', a2.event_time)) 
FROM   event_log a1 
       INNER JOIN event_log a2 
               ON a2.event_id = a1.event_id 
GROUP  BY a1.event_id 
你忘了

这是另一种方法。在我的MySQL上测试

SELECT a1.event_id, 
       Min(Concat(a2.event_date, ' ', a2.event_time)), 
       Max(Concat(a2.event_date, ' ', a2.event_time)) 
FROM   event_log a1 
       INNER JOIN event_log a2 
               ON a2.event_id = a1.event_id 
GROUP  BY a1.event_id 
你忘了

这是另一种方法。在我的MySQL上测试

SELECT a1.event_id, 
       Min(Concat(a2.event_date, ' ', a2.event_time)), 
       Max(Concat(a2.event_date, ' ', a2.event_time)) 
FROM   event_log a1 
       INNER JOIN event_log a2 
               ON a2.event_id = a1.event_id 
GROUP  BY a1.event_id 

为什么要加入?您正在加入
a2\u event.id
上的
a1.event\u id
,然后只使用a1.event\u id-这将等于a2.event\u id?为什么要加入?您正在加入
a2\u event.id
上的
a1.event\u id
,然后只使用a1.event\u id-这将等于a2.event\u id?为什么要加入?您正在加入
a2\u event.id
上的
a1.event\u id
,然后只使用a1.event\u id-这将等于a2.event\u id?为什么要加入?您正在加入
a2\u event.id
上的
a1.event\u id
,然后只使用a1.event\u id-这将等于a2.event\u id?