表结构列名 数据类型(精度范围) 空/非空 约束条件 说明
ID   INTEGER             N          序列号
BEGINTIME  varchar                  Y          开始时间(点分)
ENDTIME     varchar                  Y          结束时间
我数据库中维护了不知道几笔数据,开始时间,结束时间都是点,分格式(如1:00)。这几笔数据有可能是一天24小时,分出来的时间段,也有可能不是。当当前时间跟其中的一个开始时间相同,就会进行一些操作,当错误操作的时候,有个变量N(N+1)就会+1操作,然后有别的操作将错误操作时间段内数据从新操作,我这边想问的是根据N怎么来得到各个时间段呢?每天都会执行

解决方案 »

  1.   

    每太明白你的意思。
    1.当BEGINTIME和ENDTIME都不为空的时候,你可以根据当前时间>=BEGINTIME,并且当前时间<=ENDTIME来得到n。(当然不太清楚里面有没有多条符合条件的数据)
      

  2.   

    补充:
    N值是当前时间跟开始时间相同,执行程序时,里边发生异常了,我的N+1,如果一直有异常,我的N每次都加1.现在的问题是我怎么知道N值时哪个时间段的,这个程序每天都跑。
      

  3.   

    主要看你的表中的主键,或者能唯一标识的字段组合是什么,如果n是你们的唯一标识列,而你又改了n这就不太好找到你需要的数据了。
    1.做法1是在原表结构上增加一个列做为错误标识列,如果出错设置一个标识,出错重新成功执行后清空标识列的值。
    2.如果你的当BEGINTIME和ENDTIME能唯一,你可以在每次运行后备份BEGINTIME和ENDTIME的N,当源表的n与备份表不一致时即可知道是错误的项。(个人感觉效率太低).
    3.你可以每次备份源表中最大n(但描述不清不太清楚你的n是否唯一,如果不唯一那么n+1岂不是会重复),假定你的表数据不会新增了,并且n是唯一的,可每次运行前记录表中的最大n,下次运行时比上次n大的都是错误项目。