时间差(50分)

  • 主题发起人 主题发起人 llk9881116
  • 开始时间 开始时间
L

llk9881116

Unregistered / Unconfirmed
GUEST, unregistred user!
我的表中有2个时间time1和time2,格式为17:03,我想得到其差值,即中间用了多少时间(换算成分钟),放在
表中的time3里,请问怎样做?
 
var t1,t2,t3,t4,d1,d2,d3,d4:word
begin
decodetime(time1,t1,t2,t3,t4); //分解为小时,分钟,钞,毫秒
decodetime(time2,d1,d2,d4,d4);
t1:=d2-t2; //分钟差

end;
 
decodetime()用的是Tdatetime类,
我在表中输入的时间如何取出来用?
比如表time中的time1字段(格式为23:05)
谢谢
 
select datediff(minute,time1,time2)

displayformat hh:mm:ss
 
不知你time1,time2的字段类型是什么,用的是什么数据库

如果都是datetime,且用sqlserver, vgvanxk的方法很好
 
在98下效果不是太好,准确度很低,2000下到是很不错。
 
是datetime,但用access

displayformat hh:mm:ss是干什么的?怎么用?

ugvanxk的方法在access中好像用不了
 
我直接用
select time1-time2 as time3
就可以算出时间差(单位是:天),但是小数位太长
可以缩短它么?
由于只是临时数据,怎样把它保存在time3中呢?
他还可以还原到hh:mm:ss形式吗?
 
利用下列函数可以得到分钟的差值:
function MinuteSpan(const ANow, AThen: TDateTime): Double;
或者
function MinutesBetween(const ANow, AThen: TDateTime): Int64;

注意 uses中加入DateUtils
 
还是用datediff吧,帮助里面有详细解释
返回的是一个数字型,time3字段类型应为int或smallint

不知道将其还原为hh:mm:ss,有什么用,如果非要这么做。
用encodetime
 
edit3.Text:=timetostr(strtodatetime(edit2.Text)-strtodatetime(edit1.Text));
這樣得到時間不行嗎?(時分)
如果要得到分釧那我想你再把Edit3.text的值轉換一下就行了,簡單不?
 
我用了datediff
但总是说
undeclared identifier :'datediff'
why?
 
应在sql语句中使用

update table1 set time3=datediff(minute,time1,time2)

delphi中没有这个函数,
或者一下bianlx的方法
 
function Minutes(Time: TDateTime): integer;
var
H, M, S, MS: word;
begin
DecodeTime(Time, H, M, S, MS);
result := H * 60 + M;
end;
function MinuteDiff(Beginning: TDateTime; Ending:TDateTime): integer;
begin
Result := Minutes(Ending - Beginning);
end;
 
楼上的方法不错
 
Unit

DateUtils

Category

date/time routines

function MinutesBetween(const ANow, AThen: TDateTime): Int64;

Description

Call MinutesBetween to obtain the difference, in minutes, between two TDateTime values. MinutesBetween counts only entire minutes that have elapsed. Thus, MinutesBetween reports the difference between 9:00:00 AM and 9:00:59:999 AM as 0 because the difference is one millisecond short of an entire minute.
 
后退
顶部