C# 如何使用SQL查询从单行打孔机考勤日志中获取签入签出时差?

C# 如何使用SQL查询从单行打孔机考勤日志中获取签入签出时差?,c#,vb.net,C#,Vb.net,我们使用打孔机与ZKEMCEAKER.dll一起出勤,并使用Vs.net 2010获取AttLog。如何从SQL查询中获取记录? 我的桌子结构是这样的 LogID int P.K. DeviceIP varchar EnrollNo int AttDate datetime AttYear int AttMonth int AttDay int AttTime varchar 我的当前输出: LogID EnrollNo

我们使用打孔机与ZKEMCEAKER.dll一起出勤,并使用Vs.net 2010获取AttLog。如何从SQL查询中获取记录? 我的桌子结构是这样的

LogID       int P.K.
DeviceIP    varchar
EnrollNo    int
AttDate     datetime
AttYear     int 
AttMonth    int
AttDay      int
AttTime     varchar
我的当前输出:

LogID   EnrollNo     AttDate    AttYear AttMonth  AttDay  AttTime

1   319 1/9/2011 9:55:00 PM 2011    8    31 9:55    

2   319 1/9/2011 18:30:00 PM    2011    8    31 18:30   

3   325 1/9/2011 10:00:00 PM    2011    8    31 10:00   

4   325 1/9/2011 18:35:00 PM    2011    8    31 18:35   
我想要这样的新输出,并计算输入输出时间差:

LogID  EnrollNo   AttDate          AttYear  AttMonth    AttDay  In    out    Diff

1   319 1/9/2011 9:55:00 PM 2011   8         31         9:55   18:30     8:35

2   325 1/9/2011 6:30:00 PM 2011   8         31         10:00   18:35    8:35
试试这个

选择TIMEDIFF18:30,9:55作为差异

选择TIMEDIFFIn,Out作为Diff


输出:08:35:00

您想要同一天同一EnrolNo的第一次和最后一次吗?请尝试分组方式获取“输入”和“输出”字段,然后使用其他答案中的时间差来计算差异:

LogID  EnrollNo   AttDate          AttYear  AttMonth    AttDay  In    out    Diff

1   319 1/9/2011 9:55:00 PM 2011   8         31         9:55   18:30     8:35

2   325 1/9/2011 6:30:00 PM 2011   8         31         10:00   18:35    8:35
选择EnrolNo、AttYear、AttMonth、AttDay、minatDate作为[输入],MaxAttDate作为[输出], 时间\格式timediff[Out],[In],“%H:%i”为[Diff] 从桌子上
按EnrolNo、AttYear、AttMonth、AttDay分组

好的,你的答案是对的,但是我的输出是不同的,我提到了我想像这样新输出,计算输入输出时间不同的LogID注册日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期日期2011年9月1日9:55:00下午2011年8:31 9:55 18:30 8:35 2 325 1/9/2011年6:30:00下午2011年8:31 10:0018:35 8:35试试这个。。。选择时间_FormatTIMEDIFF18:30,9:55,'%l:%i';