SQL中时间的加减

  早晨上班,考勤系统突然遭遇崩溃,结果造成公司好多员工未能正常考勤,后经服务器重启才解决问题,但此时员工再考勤已经“迟到”了。这是考勤系统正常运行以来第一次事故,没办法只好采取补救措施,手工将员工的考勤记录做一下调整。
  这种事情,如果是用C#就很容易解决,但是在SQL中该如何做呢?以前还真没有弄过,打开SQL Server联机丛书,很快找到一个函数:DATEADD ( datepart , number, date ) ,该函数的作用是在指定时间的基础上加上一段时间,然后再返回。有了这个函数,事情可就好办多了。
  比如:  
USE pubs
GO
SELECT DATEADD(day,
21 ,pubdate) AS timeframe
FROM titles
GO
  就是返回在pubdate字段原有时间的基础上加上21天的值。
  datepart取值如下表:
日期部分 缩写
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms

  具体到我的问题,需要在原有记录的基础上减去15分钟,条件是所有今天早上迟到的考勤记录,见下面的SQL:
update  kaoqin
set  sj = dateadd (mi, - 15 ,sj)
where  (sj > ' 2007-8-15 08:00:00 ' )
  减去时间只需要设定number为相应的负值就行了。

你可能感兴趣的:(程序悟语)