时间段内的数据。这个where条件怎么写

weisaisz 2015-11-20 09:57:52
悲催,可用分不够

原数据

Mytable

StartTime EndTime
2015-11-18 00:00:10.000 2015-11-23 00:00:01.000
2015-11-19 00:00:01.000 2015-11-19 00:00:01.000
2015-11-19 00:00:03.000 2015-11-19 00:00:03.000


求查询出在条件范围内包含的记录
如录入条件
WHERE (StartTime >= '2015-11-18') AND (StartTime <= '2015-11-26')
这3条数据都出来

但是如果录入条件
WHERE (StartTime >= '2015-11-19') AND (StartTime <= '2015-11-26')

第一条数据不出来,但是第一条部分时间段是在这个范围

...全文
1545 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
weisaisz 2015-11-20
  • 打赏
  • 举报
回复
引用 13 楼 u011494732 的回复:
WHERE (StartTime between '2015-11-19' and '2015-11-26') OR (EndTime between '2015-11-19' and '2015-11-26') OR (StartTime < '2015-11-19' and EndTime > '2015-11-26')
这个好像也是对的,而且比较简洁
苍松 2015-11-20
  • 打赏
  • 举报
回复
WHERE (StartTime between '2015-11-19' and '2015-11-26') OR (EndTime between '2015-11-19' and '2015-11-26') OR (StartTime < '2015-11-19' and EndTime > '2015-11-26')
zbdzjx 2015-11-20
  • 打赏
  • 举报
回复
引用 11 楼 weisaisz 的回复:
这样? DECLARE @StartTime AS DATETIME DECLARE @EndTime AS DATETIME SELECT @StartTime='2015-11-19',@EndTime='2015-11-26' select 。。。 from 。。。 WHERE ((StartTime <= @StartTime) AND (EndTime>@StartTime) AND (EndTime <= @EndTime)) OR ((StartTime BETWEEN @StartTime AND @EndTime) AND (EndTime >= @EndTime) ) OR ((StartTime BETWEEN @StartTime AND @EndTime) AND (EndTime BETWEEN @StartTime AND @EndTime) ) OR ((@StartTime BETWEEN StartTime AND EndTime ) AND ((@EndTime BETWEEN StartTime AND EndTime )))
应该是这样
weisaisz 2015-11-20
  • 打赏
  • 举报
回复
这样? DECLARE @StartTime AS DATETIME DECLARE @EndTime AS DATETIME SELECT @StartTime='2015-11-19',@EndTime='2015-11-26' select 。。。 from 。。。 WHERE ((StartTime <= @StartTime) AND (EndTime>@StartTime) AND (EndTime <= @EndTime)) OR ((StartTime BETWEEN @StartTime AND @EndTime) AND (EndTime >= @EndTime) ) OR ((StartTime BETWEEN @StartTime AND @EndTime) AND (EndTime BETWEEN @StartTime AND @EndTime) ) OR ((@StartTime BETWEEN StartTime AND EndTime ) AND ((@EndTime BETWEEN StartTime AND EndTime )))
weisaisz 2015-11-20
  • 打赏
  • 举报
回复
引用 5 楼 weisaisz 的回复:
[quote=引用 3 楼 zbdzjx 的回复:] 不能简简单单的只用StartTime来判断,EndTime也要判断。 可以列举一下,一共有四种情况: 1、StartTime<查询开始时间<EndTime<查询结束时间 2、查询开始时间<StartTime<查询结束时间<EndTime 3、查询开始时间<StartTime<EndTime<查询结束时间 4、StartTime<查询开始时间<查询结束时间<EndTime 所以,在SQL语句中,要将这四种情况都写进去。
这4中,每种用and,然后在用or连起来吗?[/quote] 这个应该是正解吧
weisaisz 2015-11-20
  • 打赏
  • 举报
回复
引用 7 楼 qq_18219519 的回复:
where StartTime between  '2015-11-19' and '2015-11-26'
为什么不这样写
如果 StartTime 是2015-11-1;endTime 是 2015-11-30 这种情况处理这样查询不行吧
洞穿秋水 2015-11-20
  • 打赏
  • 举报
回复
这样是否好理解一些,只要有一个时间在指定的时间段内就可以 WHERE (StartTime between '2015-11-19' and '2015-11-19') or (EndTime between '2015-11-26' and '2015-11-19')
  • 打赏
  • 举报
回复
where StartTime between  '2015-11-19' and '2015-11-26'
为什么不这样写
Yole 2015-11-20
  • 打赏
  • 举报
回复
既然表中记录了开始和结束日期,那么参数的话就应该是一个,该参数在表中日期区间。
weisaisz 2015-11-20
  • 打赏
  • 举报
回复
引用 3 楼 zbdzjx 的回复:
不能简简单单的只用StartTime来判断,EndTime也要判断。 可以列举一下,一共有四种情况: 1、StartTime<查询开始时间<EndTime<查询结束时间 2、查询开始时间<StartTime<查询结束时间<EndTime 3、查询开始时间<StartTime<EndTime<查询结束时间 4、StartTime<查询开始时间<查询结束时间<EndTime 所以,在SQL语句中,要将这四种情况都写进去。
这4中,每种用and,然后在用or连起来吗?
weisaisz 2015-11-20
  • 打赏
  • 举报
回复
这样可用吗? ((StartTime >= '2015-11-19') or (EndTime <= '2015-11-26'))
zbdzjx 2015-11-20
  • 打赏
  • 举报
回复
不能简简单单的只用StartTime来判断,EndTime也要判断。 可以列举一下,一共有四种情况: 1、StartTime<查询开始时间<EndTime<查询结束时间 2、查询开始时间<StartTime<查询结束时间<EndTime 3、查询开始时间<StartTime<EndTime<查询结束时间 4、StartTime<查询开始时间<查询结束时间<EndTime 所以,在SQL语句中,要将这四种情况都写进去。
Yole 2015-11-20
  • 打赏
  • 举报
回复
WHERE (StartTime >= '2015-11-19' or EndTime>='2015-11-19') AND (StartTime <= '2015-11-26' or EndTime<='2015-11-19')
weisaisz 2015-11-20
  • 打赏
  • 举报
回复
第一条数据不出来,但是第一条部分时间段是在这个范围内的,只要包含在条件范围内的都出来,这个where条件怎么写 谢谢
zbdzjx 2015-11-20
  • 打赏
  • 举报
回复
引用 14 楼 weisaisz 的回复:
[quote=引用 13 楼 u011494732 的回复:] WHERE (StartTime between '2015-11-19' and '2015-11-26') OR (EndTime between '2015-11-19' and '2015-11-26') OR (StartTime < '2015-11-19' and EndTime > '2015-11-26')
这个好像也是对的,而且比较简洁[/quote] 感觉,可以再缩减,就是:查询开始时间<EndTime and StartTime<查询结束时间 有些复杂的问题,解决方式就是列举全部可能,再不断简化。

11,848

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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