以文本方式查看主题

-  易表在线答疑  (http://egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://egrid2000.com/dvbbs/list.asp?boardid=2)
----  [求助]请问在表设计中的列类型中时段型如何使用?  (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=20180)

--  作者:花落无痕
--  发布时间:2010/11/4 9:46:00
--  [求助]请问在表设计中的列类型中时段型如何使用?
无内容
--  作者:lyang70
--  发布时间:2010/11/4 10:41:00
--  
帮助文件中有时间与时段的说明,去看看吧...
--  作者:花落无痕
--  发布时间:2010/11/4 14:21:00
--  
在帮助文件的哪个项目里啊?
--  作者:lyang70
--  发布时间:2010/11/4 14:31:00
--  
时间计算
两种列类型
易表有两种和时间有关的列类型,时间型和时段型,前者表示某一个日期或时间,后者表示一个时间间隔。
有效的时间数据 99-01-01
12:30:12
有效的时段数据 28:12  
12:30:12
无效的时间数据 28:12
无效的时段数据 99-01-01

如何得到时间间隔
利用函数Number可以计算时间间隔,例如:
Number($"1999-3-1") - Number($"1999-2-1") = 28
Number($"7:30") - Number($"1:30")  = 0.25
Number函数是将时间转换为以日为单位的数字,所以用这种方式计算得出的时间间隔是以日为单位的。
 
时段数据的特别之处
时段型数据通常表示两个时间的间隔,并且是以秒为单位的(尽管显示为时分秒),所以用Number得到两个时间的间隔之后,还必须乘以每天的秒数(86400),才能得到真正的时段型数据,例如:
(Number($"7:30") - Number($"1:28")) * 86400 = 6:02
需要的注意的是,上述的公式只有用在时段型列才有效,否则会得到以秒表示的时间间隔:
(Number($"7:30") - Number($"1:28")) * 86400 = 21720
可以用CTime函数将数值转换为时段数据,例如:
CTime(21720) = 6:02
时段数据可以直接进行加减,例如下图中,后三列全部为时段型,合计列的刷新公式为:[上班时间] + [加班时间]


 
示例一
在打字速度考试中,知道每个学员的用时和字数,如何求得每分钟的平均打字速度呢?很简单,将“用时”列设为时段型,时段型数据参与运算的时候,将转换为以秒为单位的数值,例如时段“0:01:30”等于90秒,所以将转换为数值90参与计算。综上所述,平均每分钟打字速度的计算公式为:
[字数] / [用时] * 60

示例二
在一个工资管理系统中,员工每天的工资按小时计算,每小时的工资为8元,那么工资列的刷新公式应该为:
(Number([下班时间]) - Number([上班时间]))  * 24 * 8
如果需要知道每人每天的工作时间长度,可增加一列“工作时数”,将其列类型设为时段型,刷新公式设为:
(Number([下班时间]) - Number([上班时间])) * 86400
然后将工资列的刷新公式设为:
[工作时数]/3600 * 8

怎么理解上面的公式呢,函数Number求出的时间差是以天为单位,乘以24才是小时数,乘以86400(24 * 3600)得到的才是时段数据。

-=-=-=- 以下内容由 lyang702010年11月04日 02:33pm 时添加 -=-=-=-
——你在帮助文件的搜索框中输入“时段”即可看到相关内容。