SQL中。如何提取日期字段前一天的数据
例如:工号姓名日期上班时间下班时间1小杨2010-12-0108:5022:001小杨2010-12-0209:3022:001小杨2010-12-0309:3018:0...
例如:
工号 姓名 日 期 上班时间 下班时间
1 小杨 2010-12-01 08:50 22:00
1 小杨 2010-12-02 09:30 22:00
1 小杨 2010-12-03 09:30 18:00
如果前一天加班,第二天就可以9.30来上班。
想通过一条sql来判断昨天加班是超过了21:30的
怎么写啊大哥~~~~急啊~~~在线等~~~~~ 展开
工号 姓名 日 期 上班时间 下班时间
1 小杨 2010-12-01 08:50 22:00
1 小杨 2010-12-02 09:30 22:00
1 小杨 2010-12-03 09:30 18:00
如果前一天加班,第二天就可以9.30来上班。
想通过一条sql来判断昨天加班是超过了21:30的
怎么写啊大哥~~~~急啊~~~在线等~~~~~ 展开
6个回答
展开全部
--肯定行
select * from
(select 姓名,日期,上班时间 from a
where 日期 > DATEADD(mm, DATEDIFF(mm,0,getdate())-1, 0) --上月第一天
and 日期<dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) --上月最后一天
and 签到时间 > '08:30') z --求出所有上班时间过8:30的人
left join
(select 姓名,日期,下班时间 from a
where 日期 > DATEADD(mm, DATEDIFF(mm,0,getdate())-1, 0) --上月第一天
and 日期<dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) --上月最后一天
and 签退时间 > = '21:30') b --求出所有下班晚于21:30的人
on z.姓名 = b.姓名 and convert(datetime,z.日期) = convert(datetime,b.日期)-1
select * from
(select 姓名,日期,上班时间 from a
where 日期 > DATEADD(mm, DATEDIFF(mm,0,getdate())-1, 0) --上月第一天
and 日期<dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) --上月最后一天
and 签到时间 > '08:30') z --求出所有上班时间过8:30的人
left join
(select 姓名,日期,下班时间 from a
where 日期 > DATEADD(mm, DATEDIFF(mm,0,getdate())-1, 0) --上月第一天
and 日期<dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) --上月最后一天
and 签退时间 > = '21:30') b --求出所有下班晚于21:30的人
on z.姓名 = b.姓名 and convert(datetime,z.日期) = convert(datetime,b.日期)-1
展开全部
呵呵。考勤管理很人性化嘛。
where 条件可以这样写:
日期(假设字符型)= to_char(sysdate-1,'YYYY-MM-DD') --昨天
and 下班时间(也假定字符型) > '21:30'
注意不要像 spiderrobot那样写语句哦。
不要对列做函数操作,除非你在列上建了相应的函数索引,否则是无法使用索引的。
而一般情况下,都是没有函数索引的。所以,在列上使用函数基本上就是一个坏的编程习惯。
where 条件可以这样写:
日期(假设字符型)= to_char(sysdate-1,'YYYY-MM-DD') --昨天
and 下班时间(也假定字符型) > '21:30'
注意不要像 spiderrobot那样写语句哦。
不要对列做函数操作,除非你在列上建了相应的函数索引,否则是无法使用索引的。
而一般情况下,都是没有函数索引的。所以,在列上使用函数基本上就是一个坏的编程习惯。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
昨天,就是 日期-1
select 工号,下班日期 form 表 where 日期=计算的日期-1
select 工号,下班日期 form 表 where 日期=计算的日期-1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select 姓名,上班时间,下班时间 from table1 where trunc(日期)=trunc(sysdate)-1
and to_number(to_char(下班时间,'hh24mi'))>2130 ;
and to_number(to_char(下班时间,'hh24mi'))>2130 ;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前天的
select * from tb where datediff(dd,日期字段,'2010-12-01')=1
select * from tb where datediff(dd,日期字段,'2010-12-01')=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询