关于sql的问题

kofoun 2008-04-09 02:56:48
有一表如下:
employee
字段
employee_id(工号),employee_name(姓名),starttime(请假开始时间), endtime(请假结束时间)
001 李工 2008-1-1 2008-1-4
002 黄工 2008-1-3 2008-3-3
003 谢工 2008-1-3 2008-1-5

我想查询starttime在:2008-1-3并且endtime在2008-1-3的记录
理论得出的结果应是:
001 李工 2008-1-1 2008-1-4
002 黄工 2008-1-3 2008-3-3
003 谢工 2008-1-3 2008-1-5

因为以上三人都是当在1-3之间有休假记录
用sql怎么实现??
...全文
59 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sweetweiwei 2008-04-09
  • 打赏
  • 举报
回复
create table employee
(
employee_id char(3),
employee_name nvarchar(10),
starttime datetime,
endtime datetime
)
insert into employee
select
'001',N'李工', '2008-1-1','2008-1-4' union
select
'002',N'黄工', '2008-1-3','2008-3-3' UNION
select
'003',N'谢工', '2008-1-3','2008-1-5'

select employee_id,employee_name,starttime,endtime
from employee
where starttime<= '2008-1-3' or endtime >= '2008-1-3'
结果
employee_id employee_name starttime endtime
----------- ------------- ----------------------- -----------------------
001 李工 2008-01-01 00:00:00.000 2008-01-04 00:00:00.000
002 黄工 2008-01-03 00:00:00.000 2008-03-03 00:00:00.000
003 谢工 2008-01-03 00:00:00.000 2008-01-05 00:00:00.000

(3 row(s) affected)
--不是你要的吗

-狙击手- 2008-04-09
  • 打赏
  • 举报
回复
declare @starttime datetime,@endtime datetime
set @starttime='2008-1-3'
set @endtime ='2008-1-3'

select *
from employee
where datediff(d,@starttime ,starttime) = 0
and datediff(d,@endtime ,starttime) = 0
evoloyeu 2008-04-09
  • 打赏
  • 举报
回复
read book or search online
kofoun 2008-04-09
  • 打赏
  • 举报
回复
都是日期字段
昵称被占用了 2008-04-09
  • 打赏
  • 举报
回复
检查你的数据类型吧

最好是日期的东西你就用datetime类型,否则很难交流
kofoun 2008-04-09
  • 打赏
  • 举报
回复
也就是说在1-3这个时间当中,有记录的都应全部找出来
kofoun 2008-04-09
  • 打赏
  • 举报
回复
没有一个答案是对的,请大家做一测试就知道结果同我预期的不一样
sweetweiwei 2008-04-09
  • 打赏
  • 举报
回复
select employee_id,employee_name,starttime,endtime
from employee
where starttime<= '2008-1-3' or endtime >= '2008-1-3'
wlinglong 2008-04-09
  • 打赏
  • 举报
回复
Select * From employee Where starttime <= @end and endtime >= @end
昵称被占用了 2008-04-09
  • 打赏
  • 举报
回复
or:

select * from employee 
where starttime>='2008-1-3'
and endtime<='2008-1-3'
子陌红尘 2008-04-09
  • 打赏
  • 举报
回复

declare @starttime datetime,@endtime datetime
set @starttime='2008-1-3'
set @endtime ='2008-1-3'

select * from employee where (@starttime between starttime and endtime) and (@endtime between starttime and endtime)
昵称被占用了 2008-04-09
  • 打赏
  • 举报
回复
select * from employee 
where '2008-1-3' between starttime and endtime

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧