Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在一个字段中获得最大时间和最小时间?_Mysql_Sql_Time_Max_Min - Fatal编程技术网

Mysql 如何在一个字段中获得最大时间和最小时间?

Mysql 如何在一个字段中获得最大时间和最小时间?,mysql,sql,time,max,min,Mysql,Sql,Time,Max,Min,我想问一下mysql查询 我有这样的表格数据 我的数据 `userid | time| date 609 | 07:56:31|2014-01-23 609 | 21:20:47|2014-01-23 609 | 17:25:27|2014-01-24 609 | 17:25:29|2014-01-24 609 | 17:13:54|2014-01-27 609 | 17:13:56|2014-01-27 609 | 07:55:09|2014-01-27` 我试过各种方法

我想问一下mysql查询

我有这样的表格数据

我的数据

`userid | time| date
609  | 07:56:31|2014-01-23 
609  | 21:20:47|2014-01-23
609  | 17:25:27|2014-01-24
609  | 17:25:29|2014-01-24
609  | 17:13:54|2014-01-27
609  | 17:13:56|2014-01-27
609  | 07:55:09|2014-01-27`

我试过各种方法

但都没有成功


规则
 有人能帮我吗……:(谢谢。提前……

你试过群舞吗

SELECT user_id, date, GROUP_CONCAT(time) as in_out FROM data GROUP BY date ORDER BY date,time;

这不是你所需要的100%,但可能已经足够接近了?

我认为这正是你想要的,与你的答案不完全一样,但我认为这是正确的

您需要加入一个包含该用户id的所有唯一日期的列表,然后使用该列表按时间分组并获取min()和max()

select t1.userid, 
       t2.date, 
       min(t1.time) as in_time, 
       max(t1.time) as out_time
  from test t1
  join (select distinct date from test where userid = 609) t2
 where t1.date = t2.date
   and userid = 609
 group by t1.userid, t2.date;
我还想说的是,与其使用日期和时间,不如只存储datetime,然后通过选择日期部分的函数进行分组


时钟输入和时钟输出的规则是什么?在输出中有输入数据中没有的日期(25和26),是输出日历样式吗?对不起,我的描述不完整…时钟输入的规则=where time>='10:01'和时钟输出@AndreasWederbrand,,,,,有很多人需要帮助。。。
userid|date |clock_in | clock_out
609  |2014-01-23 |07:56 |21:20
609  |2014-01-24 |      |17:25
609  |2014-01-25 |      |
609  |2014-01-26 |      |
609  |2014-01-27 |07:55 |17:13

SELECT user_id, date, GROUP_CONCAT(time) as in_out FROM data GROUP BY date ORDER BY date,time;
select t1.userid, 
       t2.date, 
       min(t1.time) as in_time, 
       max(t1.time) as out_time
  from test t1
  join (select distinct date from test where userid = 609) t2
 where t1.date = t2.date
   and userid = 609
 group by t1.userid, t2.date;