导航
  • 主页
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言

请问PB中datatime类型,如何做减法运算?

jeoff 2003-12-10 12:02:16
请问PB中datatime类型,如何做减法运算?

忙了一上午,都没有搞定.请各位帮忙了
我在表中定义了两个datatime类型的字段
现在用户输入好后,我要自动生成这两个时间的 时间间隔是多少个小时多少分钟,并最终给用户的是准确的经历时间,单位是小时,比如:2003-01-01 01:00到
2003-01-02 06:30 结果应该是:29.5小时
拜托了~~先谢谢了
...全文
225 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodeMagic 2003-12-10
right,自己写一个嘛。
回复
klbt 2003-12-10
ldy(罗大佑) 还说了一个函数SecondsAfter ( time1, time2 ),可以精确到秒。
如果不行,你可以自己编制一个函数,输入参数是两个datatime类型的,并不困难。
回复
mittee 2003-12-10
sql 语句里用 DATEDIFF ( hh,startdate , enddate )来算
回复
jeoff 2003-12-10
我的数据库是本地的 anywhere 7数据库
DaysAfter ( date1, date2 )
我试过的,但是不能解决问题,比如,2003-01-01 06:00
到2003-01-02 01:30 时,天数可以做减法,但小时不够减,还得和天数借位~这里进制还有问题,天数是30,小时是60,月是12等等~
楼上有没有这方面的代码贴出来看看,谢谢了
回复
dotnba 2003-12-10
DaysAfter ( date1, date2 )
SecondsAfter ( time1, time2 )
可以利用后台数据库的函数实现
回复
GoldProgramer 2003-12-10
1:先取出相差天数(这可能算出来)。
2: 自定义一函数进行运算得到相差的分钟数。
uf_GetMinute(string Time1, string Time2) //这两个变量为两个字段中的时间部分的串
                      //相信你可以取出来吧。格式为HH:MM
long ll_H1, ll_H2, ll_M1, ll_M2, ll_Result
//在这里把相应的小时,分钟取出来,方法很多,这里就不写了
ll_Result = (ll_H1 - ll_H2) * 60 + (ll_M1 - ll_M2)

3: 把天数转换为分钟数 + 2的结果
4:自定义一函数把分钟数转换为小时串。
uf_MinuteToHour(dec aMinute)
return string(aMinute / 60, '#.00');

//不应该很难。
回复
hdvcd 2003-12-10
学习
回复
freedom2001 2003-12-10
用daysafter和secondsafter单独写一个处理函数(最好不要写成窗体函数,要写成公用函数),这可以作为自己的一个积累
回复
workhand 2003-12-10
建议自己做一下试试,应该不难
回复
hzhxxx 2003-12-10


自己在加工就可以拉啊

回复
CodeMagic 2003-12-10
to hmhouyp(阳光小子) :
你的判断有问题,如果date2的时间值小于date1的时间值,这样经过daysafter(date1,date2)求出的天数差是不正确的。
回复
小子侯 2003-12-10
首先用日期函数daysafter(date1,date2)算出日期差天数,在用时间函数secondsafter(time1,time2)算出时间差最小到秒。根据这两个值,把天数和秒合算成同一时间单位结果就出来了。
回复
CodeMagic 2003-12-10
设数据库相应字段的内容已经检索到两个DateTime变量中,下面给你实现代码:

Date d1,d2
Time t1,t2
DateTime dt1,dt2
Int DayInterval,SecondInterval,Total_Seconds
//DayInterval保存天数间隔 ,SecondInterval秒差, Total_Seconds保存总共相差多少秒

d1=Date(dt1) //设数据库字段日期时间类型字段的内容已检索到变量dt1,dt2中
t1=Time(dt1)

d2=Date(dt2)
t2=Time(dt2)

If t2>t1 Then
DayInterval=DaysAfter(d2,d1)
SecondInterval=SecondsAfter(t2,t1)
Else
DayInterval=DaysAfter(d2,d1) -1
SecondInterval=SecondsAfter(t1,t2)
End If

Total_Seconds=DayInterval*24*3600+SecondInterval


回复
发动态
发帖子
PowerBuilder
创建于2007-09-28

814

社区成员

PowerBuilder 相关问题讨论
申请成为版主
社区公告
暂无公告