CN101393621A - 获取指定工作日的方法和系统 - Google Patents
获取指定工作日的方法和系统 Download PDFInfo
- Publication number
- CN101393621A CN101393621A CNA2008101683842A CN200810168384A CN101393621A CN 101393621 A CN101393621 A CN 101393621A CN A2008101683842 A CNA2008101683842 A CN A2008101683842A CN 200810168384 A CN200810168384 A CN 200810168384A CN 101393621 A CN101393621 A CN 101393621A
- Authority
- CN
- China
- Prior art keywords
- working day
- date
- day
- sequence
- calendar
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了获取指定工作日的方法和系统,其中所述方法包括:获取查询起始日期和指定工作日差异;根据获取的所述起始日期从预先修改后的工厂日历中确定所述查询起始日期的工作日序列;根据所述查询起始日期的工作日序列和所述指定工作日差异,获取待查询的指定工作日的工作日序列值;根据所获取的待查询的指定工作日的工作日序列值从修改后的工厂日历中确定指定工作日,从而避免了每次查询指定工作日差异的工作日时都要进行的SQL循环操作,优化了运算时间,提高了工作效率。
Description
技术领域
本发明涉及企业资源规划(ERP,Enterprise Resourse Planning)领域,尤其涉及获取指定工作日的方法和系统。
背景技术
工厂日历也称为生产日历,是用于ERP系统的特殊形式的日历,它是由普通日历除去每周休息日、节假日、停工和其它不生产的日期而形成的,是物料需求计划(MRP,Material Requirement Planning)展开计划的依据之一。
对于某一天而言,可能是工作日,也可能是非工作日,系统在生成计划时,由于非工作日不能安排生产任务,因此遇到非工作日时必须自动跳过,直到找到符合指定工作日差异的工作日。
其中,指定工作日差异可以是正数差异,也可以是负数差异。其中,指定工作日的正数差异是指自某一自然日起到该日期之后的某一工作日之间所包含的工作日总数;指定工作日的负数差异是指自某一自然日其到该日期之前的某一工作日之间所包含的工作日总数。
快速的查找定位ERP系统中指定工作日,对于有效、合理安排生产任务,有着非常重要的作用。
目前,常用的定位指定工作日差异的工作日的方法就是通过SQL语句进行查询来获取普通日期对应的工作日,如:要获取从2007年9月4日开始的第13个工作日,即查找距2007年9月4日的工作日差异为13的工作日,现有的方法是从2007年9月4日开始,设定一个日期计数器,判断当前日是否为工作日,如果是就将日期计数器加1,如果不是日期计数器不变,日期不断递增。直到日期计数器为13时,对应的当前日为从2007年9月4日开始的第13个工作日。
发明人在对现有技术的研究中发现,上述ERP系统定位指定工作日差异的工作日的方法,需要使用SQL语句利用循环的方法对指定工作日差异的工作日进行求取,循环的次数为M+N,其中M为指定工作日差异中的非工作日的天数,N为指定的工作日差异的天数。很显然,这样的方法中SQL语句复杂,每次要查询指定工作日差异的工作日时都要进行SQL循环,工作效率低。
发明内容
有鉴于此,本发明实施例的目的在于提供获取指定工作日的方法和系统,以避免每次查询指定工作日差异的工作日时都要进行的SQL循环操作。
为实现上述目的,本发明实施例提供了如下技术方案:
一种获取指定工作日的方法,包括:
获取查询起始日期和指定工作日差异;
根据获取的所述起始日期从预先修改后的工厂日历中确定所述查询起始日期的工作日序列;
根据所述查询起始日期的工作日序列和所述指定工作日差异,获取待查询的指定工作日的工作日序列值;
根据所获取的待查询的指定工作日的工作日序列值从修改后的工厂日历中确定指定工作日。
所述在获取查询起始日期和指定工作日差异之前还包括:
修改工厂日历物理表结构,添加工作日序列字段;
更新所述工作日序列字段的内容。
当存在多套工厂日历时,所述方法还包括:获取工厂日历类型。
所述根据获取的所述起始日期从预先修改后的工厂日历中确定所述查询起始日期的工作日序列具体为:
将获取的所述查询起始日期的工作日序列值加上所述指定工作日差异后减1,所获得的值即为待查询的指定工作日的工作日序列值。
更新所述工作日序列字段的内容包括:
执行SQL语句,批量更新所述工作日序列字段的内容。
批量更新所述工作日序列字段的内容包括:
A1:将工厂日历按[日期]升序排序;
A2:从工厂日历中的第一个日期开始,查找第一个工作日,将所述第一个工作日的工作日序列字段的内容记为1,进入步骤A3;
A3:日期递增1,判断当前日是否为工作日,如果是进入步骤A4;如果不是就进入步骤A5;
A4:当前日的工作日序列为前一工作日的工作日序列字段值加1。进入步骤A6;
A5:当前日的工作日序列字段值记为0,进入步骤A6;
A6:判断当前日是否大于最后一日,如果是,结束流程;如果否,进入A3。
一种获取指定工作日的系统,包括:
获取单元,用于获取查询起始日期和指定工作日差异;
查询单元,用于根据获取的所述起始日期从预先修改后的工厂日历中确定所述查询起始日期的工作日序列;根据所述查询起始日期的工作日序列和所述指定工作日差异,获取待查询的指定工作日的工作日序列值;根据所获取待查询的制定工作日的工作日序列值从修改后的工厂日历中确定指定工作日。
还包括:
字段添加单元,用于修改工厂日历物理表结构,添加工作日序列字段;
更新单元,用于更新字段添加单元所添加的工作日序列字段的内容;
所述更新单元具体为:
SQL批量更新单元:用于利用SQL批量更新工作日序列字段的内容。
当存在多套工厂日历时,所述获取单元,还用于获取工厂日历的类型。
可见,在本发明实施例中,通过获取查询起始日期和指定工作日差异;根据获取的所述起始日期从预先修改后的工厂日历中确定所述查询起始日期的工作日序列;根据所述查询起始日期的工作日序列和所述指定工作日差异,获取待查询的指定工作日的工作日序列值;根据所获取的待查询的指定工作日的工作日序列值从修改后的工厂日历中确定指定工作日,从而避免了每次查询指定工作日差异的工作日时都要进行的SQL循环操作,优化了运算时间,提高了工作效率。
附图说明
图1本发明一实施例提供的方法的流程图;
图2本发明另一实施例提供的方法的流程图;
图3为发明一实施例提供的系统的结构示意图。
具体实施方式
本发明实施例提供了获取指定工作日的方法和系统,下面结合附图对本发明实施例进行详细描述。
在进行本发明实施例所提供的获取指定工作日的方法之前需要预先修改工厂日历物理表,具体包括:
1、修改工厂日历物理表结构,添加工作日序列字段。
2、更新添加的工作日序列字段的内容。
常规的工厂日历物理表如表1所示,包括顺序号,日期,星期和该天是否是工作日的记录。现有技术中,要获取从2007年9月4日开始的第13个工作日,即查找距2007年9月4日的工作日差异为13的工作日,所采用的方法为:
表1:
从2007年9月4日开始,设定一个日期计数器,计数器初始值为1,首先判断当前日是否为工作日,如果是就将日期计数器加1,如果不是日期计数器不变,日期不断递增。直到日期计数器为13时,对应的当前日为从2007年9月4日开始的第13个工作日,即为2007年9月20日。
本发明提供的实施例中对工厂日历物理表进行了修改,添加了工作日序列字段,修改后的工厂日历物理表见表2所示,除了包括顺序号、日期、星期、是否是工作日这些项目之外,还包括提工作日序列。
表2:
更新工作日序列字段的内容,可以人工进行更新,也可以采用SQL批量更新的方法进行更新。
参见图1,批量更新提前工作日字段的内容,具体包括:
101:将工厂日历按[日期]升序排序;
102:从工厂日历中的第一个日期开始,查找第一个工作日,将所述第一个工作日的工作日序列字段的内容记为1,进入步骤103;
103:日期递增1,判断当前日是否为工作日,如果是进入步骤104;如果不是就进入步骤105;
104:当前日的工作日序列为前一工作日的工作日序列字段值加1。进入步骤106;
105:当前日的工作日序列字段值记为0,进入步骤106;
106:判断当前日是否大于最后一日,如果是,结束流程;如果否,进入103。
当修改完工厂日历物理表后,参见图2,实现本发明实施例所提供的一种获取指定工作日的方法包括以下步骤:
步骤201:获取查询起始日期和指定工作日差异;
步骤202:根据获取的所述起始日期从预先修改后的工厂日历中确定所述查询起始日期的工作日序列值;
步骤203:根据所述查询起始日期的工作日序列和所述指定工作日差异,获取待查询的指定工作日的工作日序列值;
步骤204:根据所获取待查询的指定工作日的工指定作日序列值从预先修改的工厂日历中确定指定工作日。
仍然以查找从2007年9月4日开始的第13个工作日为例,说明本发明实施例多提供的方法。
表2即为预先修改后的工厂日历,本发明实施例的方法为:
首选获取的查询起始日期为2007年9月4日,指定工作日差异为13。
从表2中查询出2007年9月4日的工作日序列为2。
根据所述查询起始日期的工作日序列2和所述指定工作日差异13,获取待查询的指定工作日的工作日序列值具体为:
将2007年9月4日的工作日序列2加上13-1。
工作日差异的定义是从起始日当天算起的,所以要减去起始日当天,在本例中即要减去2007年9月4日这一天,计算出的值即为待查询的指定工作日的工作日序列:2+13-1=14。
从表2中查找工作日序列为14的工作日为2007年9月20日,故2007年9月20日即为所要查找的从2007年9月4日开始的第13个工作日。
表3:
循环次数比较 | |
已有方法循环次数 | N+M |
本专利方法循环次数 | 0 |
表3为本发明实施例所提供的方法与现有的方法中SQL语句的循环次数比较。显然,通过本发明实施例所提供的方法,在预先修改了工厂日历后,在修改后的工厂日历中定位指定工作日差异的工作日时,避免了每次查询指定工作日差异的工作日时都要进行的SQL循环操作,优化了运算时间,提高了工作效率
在实际应用中,还有多工厂日历的情况。若企业存在多套工厂日历,例如如若企业多个车间存在不同的停工日,则需要多套不同的工厂日历。
此时工厂日历表中包含多个工厂日历,只有确定是要查询哪个工厂日历中的指定工作日才能进行后续的查询工作。在表2所示的工厂日历物理表中添加字段[工厂日历],分别在所述多套工厂日历物理表中添加工作日序列字段,并更新所述工作日序列字段内容。在进行指定差一日查找时,首先从所述多套工厂日历中选取一套工厂日历作为查询对象,有了超找的工厂日历对象后,后续的查找工作与一套工厂日历就相同了,此处不再赘述。
在实际项目实施的过程中,可能需要经常查询定位某些日期的指定工作日差异的工作日,利用现有技术,在每次查询时都要通过对工厂日历循环查询进行,费时费力,但是,本发明在最初修改了工厂日历的物理表,更新了工作日序列后,在实际应用时只需要对修改后的工厂日历做检索,即可获得任意指定工作日差异的工作日,大大地节约了时间,提高了工作效率。
与本发明实施例提供的快速定位工厂日历的方法相对应,本发明实施例还提供快速定位工厂日历的系统。参见图3,该系统包括:
获取单元301,用于获取查询起始日期和指定工作日差异;
查询单元302,用于根据获取的所述起始日期从预先修改后的工厂日历中确定所述查询起始日期的工作日序列;根据所述查询起始日期的工作日序列和所述指定工作日差异,获取待查询的指定工作日的工作日序列值;根据所获取待查询的制定工作日的工作日序列值从修改后的工厂日历中确定指定工作日。
优选地,图3所示的系统还包括:
字段添加单元303,用于添加工作日序列字段。
更新单元304,用于更新字段添加单元所添加的工作日序列字段的内容。
其中更新单元304具体为:
批量更新单元,用于利用SQL批量更新工作日序列字段的内容。
当存在多套工厂日历时,所述字段添加单元303,还用于为所述多套工厂日历添加工作日序列字段;
所述更新单元304,还用于更新所述多套工厂日历中工作日序列的内容;
所述获取单元301,还用于从所述多套工厂日历中选取一套作为。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1、一种获取指定工作日的方法,其特征在于,在原工厂日历物理表中添加工作日序列字段,并更新所述工作日序列字段内容,其中,非工作日的工作日序列值为零;工作日的工作日序列值以第一个工作日序列值为基础进行累加,该方法包括:
获取指定工作日差异和查询起始日期;
根据获取的所述起始日期从预先修改后的工厂日历中确定所述查询起始日期的工作日序列值;
根据所述查询起始日期的工作日序列和所述指定工作日差异,获取待查询的指定工作日的工作日序列值;
根据所获取的待查询的指定工作日的工作日序列值从修改后的工厂日历中确定指定工作日。
2、根据权利要求1所述的方法,其特征在于,当存在多套工厂日历时,所述方法还包括:分别在所述多套工厂日历物理表中添加工作日序列字段,并更新所述工作日序列字段内容,从所述多套工厂日历中选取一套工厂日历作为查询对象。
3、根据权利要求1所述的方法,其特征在于,所述根据所述查询起始日期的工作日序列和所述指定工作日差异,获取待查询的指定工作日的工作日序列值具体为:
将获取的所述查询起始日期的工作日序列值加上所述指定工作日差异后减1,所获得的值即为待查询的指定工作日的工作日序列值。
4、根据权利要求1所述的方法,其特征在于,更新所述工作日序列字段的内容包括:
批量更新所述工作日序列字段的内容。
5、根据权利要求5所述的方法,其特征在于,批量更新所述工作日序列字段的内容包括:
A1:将工厂日历按日期升序排序;
A2:从工厂日历中的第一个日期开始,查找第一个工作日,将所述第一个工作日的工作日序列字段的内容记为1,进入步骤A3;
A3:日期递增1,判断当前日是否为工作日,如果是进入步骤A4;如果不是就进入步骤A5;
A4:当前日的工作日序列为前一工作日的工作日序列字段值加1。进入步骤A6;
A5:当前日的工作日序列字段值记为0,进入步骤A6;
A6:判断当前日是否大于最后一日,如果是,结束流程;如果否,进入A3。
6、一种获取指定工作日的系统,其特征在于,包括:
获取单元,用于获取查询起始日期和指定工作日差异;
查询单元,用于根据获取的所述起始日期从预先修改后的工厂日历中确定所述查询起始日期的工作日序列;根据所述查询起始日期的工作日序列和所述指定工作日差异,获取待查询的指定工作日的工作日序列值;根据所获取待查询的制定工作日的工作日序列值从修改后的工厂日历中确定指定工作日。
7、根据权利要求6所述的系统,其特征在于,还包括:
字段添加单元,用于修改工厂日历物理表结构,添加工作日序列字段;
更新单元,用于更新字段添加单元所添加的工作日序列字段的内容,非工作日的工作日序列值为零;工作日的工作日序列值以第一个工作日序列值为基础进行累加。
8、根据权利要求6所述的系统,其特征在于,所述更新单元具体为:
批量更新单元:用于利用SQL批量更新工作日序列字段的内容。
9、根据权利要求7所述的系统,其特征在于,当存在多套工厂日历时,所述字段添加单元,还用于为所述多套工厂日历添加工作日序列字段;
所述更新单元,还用于更新所述多套工厂日历中工作日序列的内容;
所述获取单元,还用于从所述多套工厂日历中选取一套作为。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101683842A CN101393621A (zh) | 2008-10-30 | 2008-10-30 | 获取指定工作日的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101683842A CN101393621A (zh) | 2008-10-30 | 2008-10-30 | 获取指定工作日的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101393621A true CN101393621A (zh) | 2009-03-25 |
Family
ID=40493907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008101683842A Pending CN101393621A (zh) | 2008-10-30 | 2008-10-30 | 获取指定工作日的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101393621A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107563716A (zh) * | 2017-07-20 | 2018-01-09 | 昆明微图科技有限公司 | 日期快速定位计算方法 |
CN107679835A (zh) * | 2017-10-19 | 2018-02-09 | 山东浪潮通软信息科技有限公司 | 一种定位工作日历的方法及装置 |
-
2008
- 2008-10-30 CN CNA2008101683842A patent/CN101393621A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107563716A (zh) * | 2017-07-20 | 2018-01-09 | 昆明微图科技有限公司 | 日期快速定位计算方法 |
CN107679835A (zh) * | 2017-10-19 | 2018-02-09 | 山东浪潮通软信息科技有限公司 | 一种定位工作日历的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577474A (zh) | 一种数据库的更新方法及系统 | |
CN104657387A (zh) | 一种数据查询方法及装置 | |
CN101923566A (zh) | 一种基于触发器的数据增量抽取方法 | |
CN101551760A (zh) | 用于并行化的数据转换过程的表示 | |
CN102521056A (zh) | 任务分配装置和任务分配方法 | |
CN102915382A (zh) | 一种基于索引的数据库的数据查询方法和装置 | |
CN105786918B (zh) | 基于数据载入存储空间的数据查询方法和装置 | |
CN104182441A (zh) | 一种数据表同步方法及装置 | |
CN104915414A (zh) | 数据抽取方法及装置 | |
CN100483397C (zh) | 一种电子数据表的函数收集方法和装置 | |
CN110442651A (zh) | 一种基于kettle实现excel数据自动上传并触发调度的方法 | |
CN102347869B (zh) | 设备性能监控的方法、装置和系统 | |
CN101393621A (zh) | 获取指定工作日的方法和系统 | |
CN106933857B (zh) | 一种数据仓库中任务的调度方法、装置 | |
CN113535481B (zh) | 数据的回溯方法、装置和非易失性计算机可读存储介质 | |
CN112633857B (zh) | 施工进度的推荐方法、装置、计算机设备及可读存储介质 | |
CN110427399A (zh) | 实时数据采集方法、系统、装置及存储介质 | |
CN117608807A (zh) | 数据调度任务自动创建及依赖自动构建方法、系统及介质 | |
CN113076463A (zh) | 一种服务器部件信息追溯方法、系统、终端及存储介质 | |
CN111708576A (zh) | 跨操作系统的设备网卡适配和管理方法、装置及系统 | |
CN103092955B (zh) | 检查点操作方法、装置及系统 | |
CN112256555A (zh) | 自动化测试用例管理系统及测试用例执行状态转换方法 | |
CN110532311A (zh) | 一种基于队列的分布式数据导出方法及系统 | |
CN101276445B (zh) | 快速定位工厂日历的方法和系统 | |
CN115375430A (zh) | 一种银行补录数据的批量解析和加载方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20090325 |