好久沒上bbs.54master了。有一朋友問了一條有關通過sql語句自動生成打卡問題。
原問題:姓名 第一次打卡時間 第二次打卡時間 日期
a 8:01 17:01 07-01-01
b 8:04 17:02 07-01-01
a 8:03 17:07 07-01-02
.............
我要做乙份假的考勤記錄,需批量更新考勤打卡時間, 如果我需要更改07年1月份的所有人員第一,
二次打卡時間,且產生虛似隨機的乙個打卡時間,第一次打卡時間範圍為8:00~8:10 第二次時間範圍為17:00~17:10之間
/**/
--人事表
create
table
#employee(employeeid
int,chinesename
nvarchar(20
))--
考勤表create
table
#onoffduty(employeeid
int,check1
datetime
,check2
datetime
,checkdate
datetime)--
虛擬人事資訊
insert
into
#employee
select1,
'張小名
'union
allselect2,
'黃大'union
allselect3,
'李兵'union
allselect4,
'劉達'union
allselect5,
'張雷'union
allselect6,
'郭小妹'/*
自動生成2023年1月份的考勤打卡時間
方法:使用游標按員工再按日期生成打卡記錄
*/declare
@begindate
datetime
,@enddate
datetime
,@checkdate
datetime
,@employeeid
int,
@execute_sql
nvarchar
(4000),
@for
intselect
@begindate='
2007-01-01',
@enddate='
2007-01-31',
@execute_sql=''
,@for=0
declare
cursoremployee
cursor
forselect
employeeid
from
#employee
open
cursoremployee
fetch
next
from
cursoremployee
into
@employeeid
while
@@fetch_status=0
begin
set@checkdate
=@begindate
while
(@checkdate
<=
@enddate
)begin
--根據實際調整rand()的值範圍
select
@execute_sql
=@execute_sql+'
insert into #onoffduty select '+
cast
(@employeeid
asnvarchar(20
))+',
'''+
convert
(nchar(10
),@checkdate
,121)+
'08:0'+
substring
(cast
(rand
() as
nvarchar(20
)),3,1
)+''',
'''+
convert
(nchar(10
),@checkdate
,121)+
'17:0'+
substring
(cast
(rand
() as
nvarchar(20
)),3,1
)+''',
'''+
convert
(nchar(10
),@checkdate
,121)+
''''
+char(10
),@for
=@for+1
if(@for%40
)=0--
每40行儲存一次,根據實際的@execute_sql長度來除錯多少行。
begin
execute
(@execute_sql
)set
@execute_sql=''
endset
@checkdate
=dateadd
(day,1
,@checkdate
)end
fetch
next
from
cursoremployee
into
@employeeid
endclose
cursoremployee
deallocate
cursoremployeeif(
@execute_sql
<>
'')
execute
(@execute_sql
) --
判斷@execute_sql是否已經執行完成
--查詢結果:
select
b.chinesename,a.check1,a.check2,a.checkdate
from
#onoffduty a
inner
join
#employee b
onb.employeeid
=a.employeeid
order
bya.employeeid,a.checkdate
drop
table
#employee,#onoffduty
按某一段時間,自動生成員工的打卡記錄
好久沒上bbs.54master了。有一朋友問了一條有關通過sql語句自動生成打卡問題。原問題 姓名 第一次打卡時間 第二次打卡時間 日期 a 8 01 17 01 07 01 01 b 8 04 17 02 07 01 01 a 8 03 17 07 07 01 02 我要做乙份假的考勤記錄,需批...
一段時間的總結
沒有記錄的習慣,可能是因為文筆不好,不會表達,不善於用文字表達出心中的想法,也許是因為忙碌,一直想著向前走,沒有停下來看看的心態,更可能是因為懶吧。大學過了四分之三了,記得應該是就大一的時候寫過一次總結,以後就是一直就這麼過了,經歷就是經歷了,也有記錄的想法但是沒有行動。大學雖然是資訊管理專業但是幾...
最近一段時間的規劃
看完了士兵突擊,有感動,也有對自己的不滿.許三多為什麼能夠成功,那麼多的人都去關心他,愛護他.561,還有幾個班長,連長等都是好人,就沒發現誰對他使壞呢 也許是電視太過於理想了.我一直在懷疑現實中還有這種人的嗎?自己現在覺的好懶惰,早上基本都睡到吃飯的時候才起來,衣服啊什麼都懶的去洗,什麼事情都堅持...