oracle如何计算 oracle如何计算自年初产值和自开工产值

如何在Oracle中计算时间差一旦你发现了时间差异,你可以使用简单的技巧来以天、小时、分钟或者秒为单位来计算时间差 。为了得到数据差,你必须选择合适的时间度量单位,这样就可以进行数据格式隐藏 。使用完善复杂的转换函数来转换日期是一个诱惑,但是你会发现这不是最好的解决方法 。round(to_number(end-date-start_date))- 消逝的时间(以天为单位)round(to_number(end-date-start_date)*24)- 消逝的时间(以小时为单位)round(to_number(end-date-start_date)*1440)- 消逝的时间(以分钟为单位)SQL select sysdate-(sysdate-3) from dual;SYSDATE-(SYSDATE-3)-------------------3这里,我们看到了Oracle使用天来作为消逝时间的单位 , 所以我们可以很容易的使用转换函数来把它转换成小时或者分钟 。然而,当分钟数不是一个整数时,我们就会遇到放置小数点的问题 。Select(sysdate-(sysdate-3.111))*1440fromdual;(SYSDATE-(SYSDATE-3.111))*1440------------------------------4479.83333当然,我们可以用ROUND函数(即取整函数)来解决这个问题,但是要记住我们必须首先把DATE数据类型转换成NUMBER数据类型 。
oracle周数计算 oracle周数计算
===========================================================
作者: keyneslin()
发表于: :
分类: ORACLE
出处:
================================================
日期计算 算第n周的第一天及最后一天是几号by keynes
================================================
ww的算法为每年 月 日为第一周开始 date为每一周结尾
例如 为第一周的第一天 而第一周的最后一天为=
公式 每周第一天date周 *
每周最后一天 date周 *
不管怎么编排格式都会跑掉 真气人 ~~
=========================================================================
日期计算 算第n周的第一天及最后一天是几号by keynes
=========================================================================
ww的算法为每年 月 日为第一周开始 date为每一周结尾
例如 为第一周的第一天 而第一周的最后一天为=
公式 每周第一天date周 *
每周最后一天 date周 *
如果以ww格式为主 第 周的起迄如下
:asdb:WFselect to_date( yyyymmdd )* to_date( yyyymmdd )* from dual;
TO_DATE( TO_DATE(
JAN JAN
:asdb:WFselect to_date( yyyymmdd )* to_date( yyyymmdd )* from dual;
TO_DATE( TO_DATE(
APR APR
Elapsed: : :
验证如下
:asdb:WFselect to_char(to_date( yyyymmdd ) ww ) as weekn to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as weekn from dual;
WEEK WEEK WEEK WEEK
Elapsed: : :
:asdb:WF
iw的算法为星期一至星期日算一周 且每年的第一个星期一为第一周
例如 为星期六 所以用iw的算法是前年的 周 而 之后才是第一周的开始
公式 每周第一天next_day(date)周 *
每周最后一天 next_day(date)周 *
如果以iw格式为主 第 周的起迄如下
:asdb:WFselect next_day(to_date( yyyymmdd ) MONDAY )* as first_day next_day(to_date( yyyymmdd ) MONDAY )* as last_day from dual;
FIRST_DAY LAST_DAY
JAN JAN
Elapsed: : :
:asdb:WF
:asdb:WFselect next_day(to_date( yyyymmdd ) MONDAY )* as first_day next_day(to_date( yyyymmdd ) MONDAY )* as last_day from dual;
FIRST_DAY LAST_DAY
APR MAY
Elapsed: : :
:asdb:WF
验证如下
:asdb:WFselect to_char(to_date( yyyymmdd ) iw ) as weekn to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as weekn from dual;
WEEK WEEK WEEK WEEK
Elapsed: : :
其它
== 查今天是 本月 的第几周
SELECT TO_CHAR(SYSDATE WW ) TO_CHAR(TRUNC(SYSDATE MM ) WW )AS weekOfMon from dual;

SELECT TO_CHAR(SYSDATE W ) AS weekOfMon from dual;
== 查今天是 今年 的第几周
select to_char(sysdate ww ) from dual;

select to_char(sysdate iw ) from dual;
附注
上文所提之iw及ww格式在doc内解释如下
IW = Week of year ( or ) based on the ISO standard
WW = Week of year ( ) where week starts on the first day of the year and continues to the seventh day of the year
参考文件
Format Models
oracle周数计算(续)
===========================================================
作者: keyneslin()
发表于: :
分类: ORACLE
出处:
本篇是接续前一篇 因有朋友(allenc)要计算oracle的周数日期起迄
所以测试了一下
测试结果如下
特殊周数计算
星期日到星期六为一周(与ww及iw算法不同)
例 年的第一周起迄是同一天 是
例 年的第一周起为 迄为
计算第一周的天数
create or replace function fdf(p_date in date) return number
is
begin
检查是否传入要计算那一年的一月一日
if to_char(to_char(p_date ddd ))then
return null;
end if;
如果第一周的第一天刚好也是最后一天时 传回
if to_char(p_date d )then
return (next_day(p_date SATURDAY ) p_date);
else
return ;
end if;
exception
when others then
dbms_output put_line(sqlerrm);
end;
计算公式
起decode(周 计算当年的一月一日 计算当年的一月一日(fdf(计算当年的一月一日)(周 )* )) as 起
迄(第一种算法) decode(周 to_date(to_char(计算当年的一月一日 yyyy )|| || yyyymmdd ) 计算当年的一月一日(fdf(计算当年的一月一日)(周 )* )) as 迄
迄(第二种算法) decode(周 last_day(trunc(计算当年的一月一日 mm )) 计算当年的一月一日(fdf(计算当年的一月一日)(周 )* )) as 迄
上面的参数部份 计算当年的一月一日 为date type 周 为number type
传回值一律是date型态
例如
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
年第 周方法
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( last_day(trunc(to_date( yyyymmdd ) mm )) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
结果如下
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
S_WEEKE_WEEK
JAN JAN
Elapsed: : :
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
S_WEEKE_WEEK
JAN JAN
Elapsed: : :
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
S_WEEKE_WEEK
DEC DEC
Elapsed: : :
:asdb:WF
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
S_WEEKE_WEEK
JAN JAN
Elapsed: : :
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
S_WEEKE_WEEK
JAN JAN
Elapsed: : :
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
S_WEEKE_WEEK
DEC DEC
Elapsed: : :
lishixinzhi/Article/program/Oracle/201311/18269
oracle license 怎么计算Oracle License的计算有两种方式:按照用户数和CPU个数. 其中按CPU计算方式如下:
License Number = The Number of CPU Cores*Core Factor
其中Core Factor 可以参考官方文档 Oracle Processor Core Factor。
如果Oracle 安装在VMWARE 上,是否也是按照这个方式计算呢? 也就是说,在虚拟机VMWARE上Oracle的License计算是否也是按照分配CPU核数来计算的呢? 关于虚拟机上ORACLE的License计算 , ORACLE 引入了下面 Soft partitioning (软分区)和Hard partitioning (硬分区)概念(如下所示),而且明确规定 VMware是软分区,并且规定Soft partitioning is not permitted as a means to determine or limit the number of software licenses required for any given server 。
也就是说在一台物理机上,假如如下所示 , 虚拟了一台Linux服务器做Oracle Database Server,虚拟了另外一台Windows服务器做SQL Server服务器,物理机上有2个物理CPU,每个4 Core , 平均分配给这两个服务器,此时Oracle的License计算是
License Number = 2* 4*0.5= 4 而不是License Number = 1*4*0.5= 2.
也就是说,不管是分配两核、四核、多核给Oracle 数据库服务器,Oracle License的计算都不以分配的核数计算,而是以物理机CPU核数来计算 。
这样虽然不合理,但是也没有办法 。至于为什么Oracle在VMWARE上这样计算License,就不得而知了 。有可能是处于商业战略考虑,也有可能是处于打击商业对手 。
Oracle中如何计算工单的完工或者开工时间如果你是手动开立的工单,且开立的工单是标准工单,那么,工单的完工日期时间计算工式如下:工艺路线固定LD=SUM(被计划、时间类、批次基准的各资源使用量)/
[[font=宋体]部门资源可用时间*min(部门资源数,工序资源分配数)];工艺路线变量LD=SUM(被计划、时间类、物料基准的各资源使用量)/
[[/size]部门资源可用时间*min(部门资源数,工序资源分配数)];工单的完成日期与起始日期的差额=
加工中LD
=
Roundup[工艺路线固定LD (工艺路线变量LD*提前期批量)] 。简单点举个例子给你:前提:1.排除部门资源班次的影响;且各资源是24小时可用的 。
2.工艺路线中的资源分配数是1;之后计算,
工单的完成日期=
工单开工日期
各个工序[[/size](被计划、时间类、批次基准的各资源使用量) (被计划、时间类、物料基准的各资源使用量*
开工数量
]之和
;如果资源不是24小时可用,且排定的资源班次时间范围是间隔的,那么就需要考虑班次的影响;即站点开始的时间系统会更正为班次的开始时间 。工艺路线中的资源分配数不是1的时候,自己测试一下吧!结果套用工式就能得出 。希望能帮助你 。
oracle成本系数怎么计算1,成本处理器处理需要计算成本的库存事务,根据库存事务生成CTCD
数据
2,根据CTCD数据生成CACD数据
如果CTCD中存在数据则,
CACD.actual_cost = CTCD.transaction_cost
CACD.prior_cost= 0
CACD.new_cost= null
否则,使用默认成本(当前平均成本)
如果CLCD中有数据,取CLCD中的数据插入CACD表中
CACD.actual_cost = CLCD.item_cost
CACD.prior_cost= CLCD.item_cost
CACD.new_cost= CLCD.item_cost
如果CLCD中没有数据(第一次发生库存事务),插入一条记录到CACD中
CACD.actual_cost = 0
CACD.prior_cost= null
CACD.new_cost= 0这种情况一般不会发生
3,根据是否使用默认成本
如果否的话,对CACD中记录进行更新,计算CACD.new_cost物料新成本,
和CACD.variance_amount差异金额
如果是的话 , 平均成本无需重新计算 , 系统直接更新CQL中的数量
4,更新CST_ITEM_COSTS中数据,计算整个组织的平均成本
【oracle如何计算 oracle如何计算自年初产值和自开工产值】oracle如何计算的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle如何计算自年初产值和自开工产值、oracle如何计算的信息别忘了在本站进行查找喔 。

    推荐阅读