2016-04-18 6 views
0

Мне нужно получить разницу между двумя временными метками в SQLite. Во время поиска я нашел this question, и в то время как принятый ответ, кажется, работает на первый взгляд, она теряет много точности:Разница между двумя метками времени в SQLite с высокой точностью

Принимая этот запрос

select timestamp, EndTimeStamp, ((julianday(EndTimeStamp)-julianday(timestamp)) * 86400.0) as Duration from X 

Я получаю этот результат:

"2016-04-18 13:44:31.630916" "2016-04-18 13:44:31.63114" "0.00100582838058472" 
"2016-04-18 13:44:31.6315231" "2016-04-18 13:44:31.6316997" "0.0" 
"2016-04-18 13:44:31.6320359" "2016-04-18 13:44:31.632202" "0.0" 
"2016-04-18 13:44:31.6326964" "2016-04-18 13:44:31.6329361" "0.0" 

Как вы можете видеть, три последних результата имеют расчетную разницу в ноле, но временные метки на самом деле различны.

Возможно ли, в SQL, с типом поля DATETIME, рассчитать точную разницу? Я бы предпочел не возвращаться к C#.

ответ

1

Как documented, формат интерпретируется функциями встроенного дата/время:

YYYY-MM-DD HH: MM: СС.ссс

В других случаях , они анализируют только первые три цифры дробных секунд.

Вы можете попытаться извлечь дополнительные цифры substr() и добавить их к результату с правильной шкалой.

+0

Я только сейчас понял, что SQLite сохраняет дату как строку, а не как выделенный тип DATETIME, поэтому теперь поведение имеет смысл. Спасибо. –

Смежные вопросы