查看问题
数据库设计
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 结束时间
还是说,没有输入的日子,只是想知道这样的违法的证件号码?