2015-02-10 6 views
2

Мне нужно рассчитать время между «фиксированным» временем (обычно несколько дней назад) и сейчас.Sqlite - Расчет периода времени

Поэтому я гугле меня к этому SQL (http://www.sqlite.org/lang_datefunc.html):

SELECT strftime ('%s', '1423143532') - strftime ('%s', 'now') as timediff; 

Это дает странный результат (122747310831610), и я понятия не имею, почему!? : -/

Должен ли я использовать другой метод расчета, является ли это проблемой? Если да, то какой из них даст мне правильный результат? :)

+0

результата, который вы получаете в секундах – apomene

+0

я знаю, но количество секунд в результате значительно лагер, чем секунды входа! Это не имеет смысла ... –

+0

Ваш SQL возвращает NULL. Скопируйте + вставьте фактический код. –

ответ

1

Голые число интерпретируется как Julian день номер:

> SELECT datetime('1423143532'); 
3891722-46318118-31 12:00:00 
> SELECT datetime(2457064); 
2015-02-10 12:00:00 

интерпретировать число как число секунд, начиная с 1970 года, вы должны использовать unixepoch модификатор:

> SELECT datetime(1423143532, 'unixepoch'); 
2015-02-05 13:38:52 
> SELECT strftime ('%s', 1423143532, 'unixepoch'); 
1423143532 

Как вы можете видеть, прохождение этого номера через strftime бессмысленно. Просто используйте его непосредственно:

> SELECT 1423143532 - strftime('%s', 'now') as timediff; 
-436916 
+0

Awesome! Спасибо приятель. :) –

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