|
早晨上班,考勤系统突然遭遇崩溃,结果造成公司好多员工未能正常考勤,后经服务器重启才解决问题,但此时员工再考勤已经“迟到”了。这是考勤系统正常运行以来第一次事故,没办法只好采取补救措施,手工将员工的考勤记录做一下调整。
这种事情,如果是用C#就很容易解决,但是在SQL中该如何做呢?以前还真没有弄过,打开SQL Server联机丛书,很快找到一个函数:DATEADD ( datepart , number, date ) ,该函数的作用是在指定时间的基础上加上一段时间,然后再返回。有了这个函数,事情可就好办多了。
比如:
USEpubs
GO
SELECTDATEADD(day,21,pubdate)AStimeframe
FROMtitles
GO
就是返回在pubdate字段原有时间的基础上加上21天的值。
datepart取值如下表:
日期部分缩写Yearyy, yyyyquarterqq, qMonthmm, mdayofyeardy, yDaydd, dWeekwk, wwHourhhminutemi, nsecondss, smillisecondms
具体到我的问题,需要在原有记录的基础上减去15分钟,条件是所有今天早上迟到的考勤记录,见下面的SQL:updatekaoqin
setsj=dateadd(mi,-15,sj)
where(sj>'2007-8-1508:00:00')
减去时间只需要设定number为相应的负值就行了。 |
|
|