2014-12-19 72 views
2

我不知道这是否是可行的,我有数据的时间戳选择数据组并获得第一和最后一个数据组中

例如表

apple 2013-01-02 06:24:22 
banana 2013-01-12 11:08:22 
apple 2013-01-02 15:24:22 
apple 2013-01-02 12:30:16 
banana 2013-01-14 18:34:22 

我想:

  1. 重新排列数据的基础上,不同的日期不timetamp,意味着所有的同日将组一起
  2. 如果可能的话我希望能达到以下的最终结果

    apple  2013-01-02 06:24:22 2013-01-02 15:24:22 // get first and last data 
    banana 2013-01-12 11:08:22 2013-01-12 11:08:22 // only one data in the group 
    banana 2013-01-14 18:34:22 2013-01-14 18:34:22 // only one data in the group 
    

我怎样才能做到这一点具有m最小的sql查询,而不是使用循环来确定?

回答

0

试试这个:

SELECT fruitName, MIN(a.timestamp), MAX(a.timestamp) 
FROM tableA a 
GROUP BY DATE(a.timestamp), fruitName; 
+0

喜,对于第二部分的任何解决方案?有些团体可能有5-6条记录,有些可能只有一条 – onegun 2014-12-19 06:41:34

0

使用MySQL DATE()功能。

SELECT FRUIT_NAME, DATE(mydate) AS dateStamp FROM TABLE 
GROUP BY DATE(TABLE.mydate); 

其中:

FRUIT_NAME:你的名字

字段指明MyDate您的日期字段。

+0

谢谢,实际上我更关心的是第二部分问题,你有什么解决办法吗? – onegun 2014-12-19 06:42:08

0

此查询应该为您提供所需的信息。 (问题的第二部分)

SELECT Fruit, Min(DateTime) AS FirstDateTime, Max(DateTime) AS LastDateTime FROM Table1 
GROUP BY DATE(DateTime); 

这将使你的输出

FRUIT  FIRSTDATETIME   LASTDATETTIME 
apple  2013-01-02 06:24:22 2013-01-02 15:24:22 
banana 2013-01-12 11:08:22 2013-01-12 11:08:22 
banana 2013-01-14 18:34:22 2013-01-14 18:34:22 
相关问题