日期:2014-05-17  浏览次数:20723 次

查看问题
数据库设计

id   开始时间   结束时间   证件号码


要求,同一个证件号码,在开始时间和结束时间中,有叠加的不超过3次

如:
1   2007-02-10   2007-07-10
2   2007-04-10   2007-08-10
3   2007-06-10   2007-12-10

这三个时间段中,
1   /   2   /3  
6/7月份是3个都有的,那么,这就是非法的


------解决方案--------------------
需求不是很明白
------解决方案--------------------
存储过程能搞定吧。
------解决方案--------------------

------解决方案--------------------
一楼说得对,需求实在太不清楚!
楼主的意思是不允许插入这样已经有两次叠加了的月份字段数据(开始时间和结束时间的新值)呢,还是要查出始末日期有三次以上叠加的证件号码呢?日这个值是固定的10吗?把需求再清楚地重发一遍吧!
------解决方案--------------------
非法数据怎么处理?
不允许出现还是查出来后删除
------解决方案--------------------
能不能举个例子?比如原始数据是什么,想要得出什么样的结果等
------解决方案--------------------
嗬嗬,大概明白了。

是不是说,
输入[2007-06]的话,希望得到一个违法的结论,
输入[2007-02]的话,希望得到一个合法的结论,

这样?
select count(id) from t1 where todate(inputdate || '-01' ,'YYYY-MM-DD') between 开始时间 and 结束时间

还是说,没有输入的日子,只是想知道这样的违法的证件号码?