问个菜鸟问题~~关于日前间隔判断的

IT小混混 发布于 2012/04/13 14:32
阅读 199
收藏 1
  数据库的某个表中 有开始时间 和结束时间 两个字段,在每新增一条记录的时候 日期不能有交叉。怎么判断?能不能弄个通用的存储过程 直接传开始时间,结束时间 表名 以及表中的开始时间,结束时间字段  就返回判断这个时间段在表中是不是有交叉。
加载中
0
vitou
vitou

你这个日期交叉 是开始和结束的 还是新增的 开始和开始的 啊 麻烦举个具体的例子

0
IT小混混
IT小混混

额 是新增的时候,在跟表中原来的数据日期段做比较  比如

在新增开始时间 5月2号 到六月 是可以的 但是从5月1号开始就不行 有交叉时间段  就是怎么判断是否有交叉呢

0
胡咧咧
胡咧咧

取最后一条数据,判断endtime < 新插入的beginTime

确保你每插入的end > start

IT小混混
IT小混混
这样的话 那中间的时间间隔 就判断不到了。比如1,2,3,5 你取到的是5 那就只能往后插了 4 也插不了
0
Andre.Z
Andre.Z

假设你的时间段是A,B
1.查找A<BeginTime and B>EndTime的数目,等于0继续第二步。
2.查找BeginTime<A<EndTime或者BeginTime<B<EndTime的数目,等于0,就说明没交叉。

0
IT小混混
IT小混混

if exists(
select 1 
from tb 
where (BeginDate between @BeginDate and @EndDate)
    or(EndDate between @BeginDate and @EndDate) 
    or(@EndDate between BeginDate and EndDate)
    or(@BeginDate between BeginDate and EndDate) )
print '时间存在交叉'

额   google之  强大的google 给了我帮助  贴上代码

mark35
mark35
如果用mysql跑这条SQL不歇菜才怪
返回顶部
顶部