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;
請參閱演示。
- 1 回答
- 0 關注
- 251 瀏覽
添加回答
舉報