如果表中有3个字段:Start_Time,End_Time,Time_Between 如何计算Start_Time和End_Time之间的差异 (两者之间经过了多长时间),以便Time_Between字段显示差异? 您是否需要为Time_Between使用计算字段,或者您可以离开原生字段来完成工作吗?
编辑:我想知道是否可以在SQLite数据库中为Time_Between字段使用触发器来完成此操作。
这就是我的想法:
CREATE TRIGGER [TIME_DIFFERENCE]
AFTER UPDATE OF [END_TIME]
ON [MYTABLE]
BEGIN
UPDATE MYTABLE SET TIME_BETWEEN = strftime('%H',START_TIME) - strftime('%H',END_TIME) WHERE rowid=new.rowid;
END
顺便说一下,这个(上面的例子)不起作用......
答案 0 :(得分:1)
使用此代码段:
var dtStartTime : TDateTime;
dtEndTime : TDateTime;
dtTimeBetween : TTime;
begin
dtStartTime := Query1.FieldByName('Start_Time').AsDateTime;
dtEndTime := Query1.FieldByName('End_Time').AsDateTime;
dtTimeBetween := dtEndTime - dtStartTime;
end;
或者您可以从数据库中的时间戳获取年,月,日,小时,分钟,秒,如下所示。
iYear := Query1.FieldByName('Start_Time').AsSQLTimeStamp.Year;
iMonth := Query1.FieldByName('Start_Time').AsSQLTimeStamp.Month;
iDay := Query1.FieldByName('Start_Time').AsSQLTimeStamp.Day;
iHour := Query1.FieldByName('Start_Time').AsSQLTimeStamp.Hour;
....... and so on.
现在您可以使用这些字段进行处理。
答案 1 :(得分:0)
发现了这个:
CREATE TRIGGER [TIME_DIFFERENCE]
AFTER UPDATE OF [end_date]
ON [Table1]
BEGIN
UPDATE Table1 SET DIFF =
cast(
(
strftime('%s',Table1.end_date)-strftime('%s',Table1.start_date)
) AS INT
) / 60/60 ;
END
据我所知,工作......
答案 2 :(得分:0)
您可以使用以下查询获得时差。
SELECT CAST('0:00' AS TIME) + (TO_TIME - FROM_TIME) FROM TABLE_NAME;
此结果可用于任何更新触发器以设置时差fie