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

时间:2014-01-30 07:08:26

标签: mysql sql

我有一个关于事件发生频率的表格,我希望看到每个事件的第一次和最后一次出现。假设我有三列,event_id,event_time和event_date。我知道这样的查询是错误的,并给出错误的结果:

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

有没有办法在不合并两列的情况下做到这一点?

2 个答案:

答案 0 :(得分:2)

请更准确地考虑列类型(日期,时间,varchar ..)以及是否要在白天或之前寻找事件的发生。

您可以将这两列连接起来并最小化,最大化。

以下假定event_time如'08:03:21'和event_date('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()中删除日期。

答案 1 :(得分:1)

你忘记了

这是另一种方法。在我的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