2015-05-30 79 views
0

我有两个两个时间戳字段(START,END)和一个TIME_DIFF字段,它是Integer类型的。我试图计算起始和结束字段之间的时间..我创建了一个触发器来做到这一点:sqlite:两个日期之间的时间差以小数表示

CREATE TRIGGER [TIME_DIFF] 
AFTER UPDATE OF [END] 
ON [KLOG] 
BEGIN 
update klog set TIME_DIFF = 
cast(
     (  
     strftime('%s',KLOG.END) -   
strftime('%s',KLOG.START) 
) as INT 
)/60/60; 
END 

这给我造成0至59分钟之间整个hours.Anything被忽略。

我想知道我该如何修改这个触发器,以便显示小数?

含义,如果时差为1小时59分钟,结果将显示1.59。如果时差为35分钟,则显示0.35。

+0

你有没有想过它通过?请记住,1小时是60分钟不是100.说1小时59分钟是1.59是有点误导。如果我爱你,我会简单地记住几分钟的时间,并根据需要处理它们(提取小时数等)。为什么更新之后如果你可以在更新之前进行更新并通过'new.TIME_DIFF = x'设置值 –

回答

1

要将秒数解释为时间戳,请使用unixepoch modifier。然后,你可以简单地使用strftime()格式化值:

strftime('%H:%S', 
     strftime('%s',KLOG.END) - strftime('%s',KLOG.START), 
     'unixepoch') 

如果您使用的儒略日,而不是秒,你并不需要一个单独的修改:

strftime('%H:%S', 
     julianday(KLOG.END) - julianday(KLOG.START))