sqlite:两个日期之间的时差(小数)

时间:2015-05-30 08:23:35

标签: sqlite

我有两个两个时间戳字段(START,END)和一个Integer类型的TIME_DIFF字段。我正在尝试计算START和END字段之间的时间。我创建了一个触发器来执行此操作:

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分钟之间的任何事情。

我想知道如何修改此触发器以便以小数显示?

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

1 个答案:

答案 0 :(得分:1)

要将秒数解释为时间戳,请使用unixepoch modifier。然后,您只需使用strftime()格式化值:

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

如果您使用Julian天而不是秒,则不需要单独的修饰符:

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