Ms access 如何从12:00:00改为00:00:00?

Ms access 如何从12:00:00改为00:00:00?,ms-access,Ms Access,使用Access 2003数据库 表1 Intime Outtime WorkTime OverTime 08:00:00 19:00:00 09:00:00 02:00:00 09:00:00 18:23:23 09:00:00 00:23:23 15:00:00 ----- 00:00:00 00:00:00 09:00:00 18:00:00 09:00:00 00:00:00 Intime Outtime WorkTime OverTime 08:00:00

使用Access 2003数据库

表1

Intime   Outtime  WorkTime OverTime

08:00:00 19:00:00 09:00:00 02:00:00
09:00:00 18:23:23 09:00:00 00:23:23
15:00:00  -----   00:00:00 00:00:00
09:00:00 18:00:00 09:00:00 00:00:00
Intime   Outtime  WorkTime    OverTime

08:00:00 19:00:00 09:00:00 AM 02:00:00 AM
09:00:00 18:23:23 09:00:00 AM 12:23:23 AM
15:00:00  -----   12:00:00 AM 00:00:00 AM
09:00:00 18:00:00 09:00:00 AM 12:00:00 AM
时间、超时、工作时间、加班数据类型为文本

From 09:00:00 to 18:00:00 - It will come in Work time
Before 09:00:00, after 18:00:00 – It will come in overtime
我的问题

SELECT PERSONID,
       CARDEVENTDATE,
       INTIME,
       OUTTIME,
       (IIF(OUTTIME = 'No Punchout', '00:00:00', WorkTime)) AS WorkedTime,
       (IIF(OUTTIME = 'No Punchout', '00:00:00', OverTime)) AS OverdutyTime,
       Latecome,
       (IIF(OUTTIME = 'No Punchout', '', EarlyLeave)) AS EarlyLeave
FROM
       (SELECT PERSONID,
               CARDEVENTDATE,
               INTIME,
               (IIF(OUTTIME = INTIME, 'No PunchOut', OUTTIME)) AS OUTTIME,
               (Format(IIf(CLng(OutTime) > 180000, 
                           CDate('18:00:00'), 
                           CDate(Format(OutTime, '00:00:00'))) 
                       - IIf(CLng(InTime) < 90000, 
                           CDate('09:00:00'), 
                           CDate(Format(InTime, '00:00:00'))),
                       'hh:nn:ss')) AS WorkTime,
               (Format(IIf(CLng(InTime) < 90000, 
                           CDate('09:00:00') 
                           - CDate(Format(InTime, '00:00:00')), 0) 
                       + IIf(CLng(OutTime) > 180000, 
                           CDate(Format(OutTime, '00:00:00')) 
                           - CDate('18:00:00'), 0), 
                       'hh:nn:ss')) AS OverTime,
               (Format(IIf(CLng(Intime) > 090000, 
                           CDate(Format(Intime, '00:00:00'))) 
                       - IIf(90000, CDate('09:00:00'), 
                           CDate(Format(InTime, '00:00:00'))), 
                       'hh:nn:ss')) AS LateCome,
               (Format(IIf(180000, 
                           CDate('18:00:00'), 
                           CDate(Format(outtime, '00:00:00'))) 
                       - IIf(CLng(Outtime) < 180000, 
                           CDate(Format(Outtime, '00:00:00'))), 
                       'hh:nn:ss')) AS EarlyLeave
               (SELECT  T_PERSON.PERSONID,
                        T_CARDEVENT.CARDEVENTDATE,
                        MIN(T_CARDEVENT.CARDEVENTTIME) AS INTIME,
                        MAX(T_CARDEVENT.CARDEVENTTIME) AS OUTTIME
               FROM     T_PERSON
                        INNER JOIN T_CARDEVENT
                        ON       T_PERSON.PERSONID = T_CARDEVENT.PERSONID
               GROUP BY T_PERSON.PERSONID,
                        T_CARDEVENT.CARDEVENTDATE
               )
       )
它显示的是12:00:00 AM而不是00:00:00,并且显示的是12:23:23而不是00:00:00

如果是00,则显示12:00:00 AM

使用Access 2007数据库的客户端。不存在Access 2003或Access 2007问题。 为什么工作时间和加班时间显示为上午12:00:00。我复制了客户端数据库并检查了系统中的数据库。正确显示“工作时间”和“随时间推移”


请任何人帮助解决我的问题。

更改系统显示时间的方式。

如何更改系统显示时间WinXP控制面板>区域和语言选项>自定义>时间我可能错了。这不是一个有效的答案,因为其他应用程序中可能存在依赖项。先生。安东尼工作得很好。时间显示正确。感谢您转换为SQL 2005 Express并使用CONVERT()。。。这有多简单?您最终将在访问方面遇到问题(MS表示,超过35000行的表存在很大的性能问题)。。。请更改它,如果发现任何其他问题,请再次发布问题。客户端可能不希望安装Express,或者作业的规范可能会说必须处于access中。我知道您可以使用access作为前端,使用SQL作为银行端,但正如我所说的,这可能不是一个选项。您的查询包含三个选择,但只有两个From,因此我很难相信它在您的系统中正常工作。“作为EarllyLeave”之后似乎缺少了一些东西。@balexandre:如果我能投票否决评论,我会的。你的评论完全不切实际,毫无帮助。这是一个显示问题。如何显示数据?一旦回答了这个问题,您就可以了解如何格式化显示。格式(DateTimeValue,“hh:nn:ss am/pm”)将在24:00时间显示,但由于您没有格式化输出,因此默认为系统设置,并以与格式(DateTimeValue”,“hh:nn:ss am/pm”)等效的格式显示。同样,这是一个显示问题,而不是SQL问题。