使用php从ms access数据库获取最大和最小时间
我正在尝试使用Microsoft Access数据库中创建的现有数据库。该数据库有一个名为使用php从ms access数据库获取最大和最小时间,php,sql,ms-access,Php,Sql,Ms Access,我正在尝试使用Microsoft Access数据库中创建的现有数据库。该数据库有一个名为CHECKINOUT的表,用于存储每个用户按顺序进行指纹检查的时间数据- USERID CHECKTIME CHECKTYPE VERIFYCODE ======================================================= 3 10/03/2013 7:03:32 PM I
CHECKINOUT
的表,用于存储每个用户按顺序进行指纹检查的时间数据-
USERID CHECKTIME CHECKTYPE VERIFYCODE
=======================================================
3 10/03/2013 7:03:32 PM I 1
3 10/03/2013 11:45:49 AM I 1
3 10/03/2013 8:40:20 AM I 1
3 11/03/2013 7:13:33 PM I 1
3 11/03/2013 11:24:36 PM I 1
3 11/03/2013 9:04:42 AM I 1
4 10/03/2013 7:02:46 PM I 1
4 10/03/2013 6:43:10 PM I 1
4 10/03/2013 10:46:41 AM I 1
4 10/03/2013 8:47:04 AM I 1
4 11/03/2013 7:23:33 PM I 1
4 11/03/2013 11:20:36 PM I 1
4 11/03/2013 8:28:42 AM I 1
现在,让我手动选择最短和最长时间
10 March UserID(3) Maximum Time: 10/03/2013 7:03:32 PM
10 March UserID(3) Minimum Time: 10/03/2013 8:40:20 AM
11 March UserID(3) Maximum Time: 11/03/2013 7:13:33 PM
11 March UserID(3) Minimum Time: 11/03/2013 9:04:42 AM
10 March UserID(4) Maximum Time: 10/03/2013 7:02:46 PM
10 March UserID(4) Minimum Time: 10/03/2013 8:47:04 AM
11 March UserID(4) Maximum Time: 11/03/2013 11:20:36 PM
11 March UserID(4) Minimum Time: 11/03/2013 8:28:42 AM
现在,我想使用php编写一个查询,从CHECKTIME
列的CHECKINOUT
表中选择单个(例如,其中UserID=3)的最小和最大时间。报告应该如下所示-
USERID | DAY | INTIME(MINIMUM TIME) | OUTTIME(MAXIMUM TIME)
=================================================================================
3 | 10/03/2013 | 8:40:20 AM | 7:03:32 PM
3 | 11/03/2013 | 9:04:42 AM | 7:13:33 PM
如何从MS Access(.mdb)数据库使用PHP实现上述查询?我认为使用子查询是可能的。但是,我找不到任何查询浏览器,如HeidiSQL、MySQL查询浏览器、MySQL终端或Navicat for MS Access,我应该在哪里编写和测试我的查询。我对Access了解不多,但一般查询应该是这样的:
SELECT
date(checktime) Day,
time(min(checktime)) MinTime,
time(max(checktime)) MaxTime
FROM t
WHERE userid = 3
GROUP BY Day
我用MySQL创建了一个数据库,但将其转换为MsAccess应该非常简单。忽略奇怪的日期格式。。。SQLFiddle正在改变这一点,但是Date()
和Time()
应该只返回日期时间的适当部分,而不是将年份设置为1970年之类的内容。看起来像anviz db;)也许这会对某人有所帮助。
来自att2003.mdb v_记录请求的MS访问请求:
SELECT
First(V_Record.Userid) AS [USER ID],
First(V_Record.Name) AS Employer,
DateValue([CheckTime]) AS Date, Min(TimeValue([CheckTime])) AS CheckIN,
Max(TimeValue([CheckTime])) AS CheckOUT,
Format(Max(TimeValue([CheckTime]))-Min(TimeValue([CheckTime])),"hh:nn") AS [Work Time],
First(V_Record.Sensorid) AS [Device ID],
First(V_Record.ClientName) AS [Device name]
FROM V_Record
GROUP BY DateValue([V_Record.CheckTime]), V_Record.Userid
ORDER BY DateValue([V_Record.CheckTime]), First(V_Record.Name);
请检查我在描述中创建的最后一个输出表。我想选择像那天一样明智的…是的。。。你是对的。。。我在描述上错了。。。请允许我修改查询表达式“DATE(CHECKTIME)Day”中的语法错误(缺少运算符),SQLExecDirect中的SQL状态37000,根据我对MySQL的了解,我尝试了相同的查询。我很感激你的回答。正如我在回答中提到的,查询是在MySQL中运行的。您必须将其转换为MsAccess(在MsAccess中查找日期时间函数,并用MsAccess期望的函数替换
date
和time
函数……这只是一个语法问题:)