急,坐等
表结构
列名 数据类型(精度范围) 空/非空 约束条件 说明
ID INTEGER N 序列号
BEGINTIME varchar Y 开始时间(点分)
ENDTIME varchar Y 结束时间
我数据库中维护了不知道几笔数据,开始时间,结束时间都是点,分格式(如1:00)。这几笔数据有可能是一天24小时,分出来的时间段,也有可能不是。当当前时间跟其中的一个开始时间相同,就会进行一些操作,当错误操作的时候,有个变量N(N+1)就会+1操作,然后有别的操作将错误操作时间段内数据从新操作,我这边想问的是根据N怎么来得到各个时间段呢?每天都会执行
--------------------编程问答-------------------- 先顶下,别沉了 --------------------编程问答-------------------- 每太明白你的意思。
1.当BEGINTIME和ENDTIME都不为空的时候,你可以根据当前时间>=BEGINTIME,并且当前时间<=ENDTIME来得到n。(当然不太清楚里面有没有多条符合条件的数据) --------------------编程问答--------------------
不是这个意思,开始时间,结束时间都不为空。这直接是个时间段。我举个例子,
第一笔数据 0:00-8:00
第二笔数据 9:00-17:00
第三笔数据 !8:00-23:00
只是个比方,每笔数据的时间段是一样的(结束时间减去开始时间),但是这些数据不一定是一天24小的。变量N是记录当前时间前几个时间段内,现在是,我怎么知道N值是哪个时间段
--------------------编程问答-------------------- 补充:
N值是当前时间跟开始时间相同,执行程序时,里边发生异常了,我的N+1,如果一直有异常,我的N每次都加1.现在的问题是我怎么知道N值时哪个时间段的,这个程序每天都跑。 --------------------编程问答-------------------- 有么有人会啊? --------------------编程问答-------------------- 个人感觉你改下表结构,做个标识列表示会更好些。
--------------------编程问答-------------------- 主要看你的表中的主键,或者能唯一标识的字段组合是什么,如果n是你们的唯一标识列,而你又改了n这就不太好找到你需要的数据了。
1.做法1是在原表结构上增加一个列做为错误标识列,如果出错设置一个标识,出错重新成功执行后清空标识列的值。
2.如果你的当BEGINTIME和ENDTIME能唯一,你可以在每次运行后备份BEGINTIME和ENDTIME的N,当源表的n与备份表不一致时即可知道是错误的项。(个人感觉效率太低).
3.你可以每次备份源表中最大n(但描述不清不太清楚你的n是否唯一,如果不唯一那么n+1岂不是会重复),假定你的表数据不会新增了,并且n是唯一的,可每次运行前记录表中的最大n,下次运行时比上次n大的都是错误项目。 --------------------编程问答-------------------- 你这样没有办法实现吧楼主,因为N值执行成功了就不加了,不执行成功就加1。你还是换方法吧。别一直纠结了。不然会浪费时间的!因为n值处于一个值后,等到这个值得情况很多。没有办法知道那个时间段啊! --------------------编程问答-------------------- 除
补充:.NET技术 , C#