亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

sqlite中時間戳的差異

sqlite中時間戳的差異

PHP
POPMUISE 2023-11-09 17:06:40
我試圖找出 SQLITE 中兩個時間戳之間的差異(毫秒),如下所示select abs(CAST ( (JulianDay(t1.TIME1) - JulianDay(t1.TIME2) ) * 24 * 60 * 60 * 1000 AS INTEGER) ) diff_millisec  from time_table;對于此數據:t1.TIME1 - 14:14:04.446258  t1.TIME2 - 14:14:04.446377答案是0。對于另一組值t1.TIME1 - 14:13:27.742646 t1.TIME2 - 14:13:27.649184答案是93為什么第一組給出 0 ?有沒有辦法給出精確的值。
查看完整描述

1 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

當使用類似的函數時,SQLite 提供高達毫秒的精度julianday(),因為只有前三位數字(點后)對結果很重要,正如日期和時間函數中提到的那樣,因此時間字符串14:14:04.446258和都14:14:04.446377被評估為14:14:04.446和被認為是平等的。

因此,您在幾毫秒內獲得的結果是正確的。

如果你想要以微秒為單位的差異,你應該添加 2 次的最后 3 位數字的差異:

select abs(CAST(

? ? ? ? (JulianDay(TIME1) - JulianDay(TIME2)) * 24 * 60 * 60 * 1000 * 1000 +?

? ? ? ? (substr(TIME1, -3) - substr(TIME2, -3))

? ? ? ? AS INTEGER

? ? ? ? )) diff_microsec?

from time_table;

但為了獲得更高的準確性,您應該使用strftime()以秒為單位的差值,然后添加以微秒為單位的差值:


select abs((strftime('%s', TIME1) - strftime('%s', TIME2)) * 1000 * 1000 +?

? ? ? ? ? ?(substr(TIME1, -6) - substr(TIME2, -6))

? ? ? ?) diff_microsec?

from time_table;

或者:


select abs((strftime('%s', TIME1) - strftime('%s', TIME2)) * 1000 * 1000 +?

? ? ? ? ? ?(substr(TIME1, instr(TIME1, '.') + 1) - substr(TIME2, instr(TIME1, '.') + 1))

? ? ? ?) diff_microsec?

from time_table;

請參閱演示



查看完整回答
反對 回復 2023-11-09
  • 1 回答
  • 0 關注
  • 251 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號