求一 SQL 语句 。有关考勤时间的问题(35分)

  • 主题发起人 网中戏
  • 开始时间

网中戏

Unregistered / Unconfirmed
GUEST, unregistred user!
已知 某班次的上班时间为‘7:30:00’、‘11:30:00’、‘13:30:00’、‘17:30’
现有一刷卡时间‘xx:xx:xx’.如何用SQL 语句判断 它最靠近哪个时间。即判断是刷的什么卡?(上午上班、上午下班、下午上班、下午下班)
 
B

bovine

Unregistered / Unconfirmed
GUEST, unregistred user!
转换成分就搞定了:7:30 = 450分,第二天时间即(00:00)以后加1440
 
W

weichao9999

Unregistered / Unconfirmed
GUEST, unregistred user!
设定两时间之间的界定时间,比如07:00:00 和 11:00:00 之间的界定时间是09:00:00
 
Z

zhlu

Unregistered / Unconfirmed
GUEST, unregistred user!
ABS(DateDiff(minute,WorkTime,WorkTime11_S)) AS WorkTime11_D,
ABS(DateDiff(minute,WorkTime,WorkTime12_S)) AS WorkTime12_D,
....

CASE WHEN WorkTime11_D<@iMaxMinutes THEN 1 WHEN WorkTime12_D<@iMaxMinutes THEN 2 ....

給一個思路: 考勤一個個判斷處理起來太慢,也不好,同時處理几個數據會快很多(因為大部分是正常的),如一天內一個人只有4個數據,且都是存在於WorkTime11_D<@iMaxMinutes OR WorkTime12_D<@iMaxMinutes,....的, 則按4個數據的大小依次放入即可, 我就是這樣做考勤的.
 
C

chen_liang

Unregistered / Unconfirmed
GUEST, unregistred user!
你应该设置考勤时间段,然后查询员工是否在该段时间类有考勤记录
 

网中戏

Unregistered / Unconfirmed
GUEST, unregistred user!
谢谢大家。如果正常刷卡的话就可以批量处理。现在我发现。有的员工第一条卡没有刷。有的第二条卡没有刷。所以我需要判断数据记录的刷卡是那一条。现在是写了许多比较函数。来比较是那条卡。想看看有没有现场的SQL语句或方法可以得到
 
D

deardai

Unregistered / Unconfirmed
GUEST, unregistred user!
其实好像写考勤处理过程也并不一定要写许多比较函数,正好弄这一块有段时间啦,我现在顺便负责工厂两万来人的考勤,我说说我的思路吧,首先,你必须对每个员工进行排班,在排班时就设置打卡时间段,在处理时你必须把设置的打卡时间段转换为数值型(e.g 07:30=450),然后你再把打卡记录取出来也转换为数据型,与它进行比较,就可以得出诸如迟到,早退,请假,没打上班1或下班2卡等等,为防止两个时间段有重合,你可以定义一个有效时间刷卡段,大概就是这样子啦,有什么问题一起讨论吧,
 

网中戏

Unregistered / Unconfirmed
GUEST, unregistred user!
[:D]还需要排班就落后了。几千人今天上这个班次。明天是那个班次。如果需要排班次不是累死人?我现在的考勤系统不需要排班次。系统按刷卡自动去对班次。计算出考勤数据。只是想优化代码。想用SQL 语句判断 它最靠近哪个时间。提高速度
 

网中戏

Unregistered / Unconfirmed
GUEST, unregistred user!
得不到答案。还是用笨办法吧。送分了
 

Similar threads

S
回复
0
查看
945
SUNSTONE的Delphi笔记
S
S
回复
0
查看
766
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部