2013-07-17 13 views
5

Czy jest możliwe uzyskanie różnicy (w sekundach) między dwiema wartościami TIMESTAMP w Sqlite3?Różnica w sekundach między znacznikami czasu w Sqlite3

Na przykład, próbowałem następujące zapytanie:

SELECT CURRENT_TIMESTAMP - my_timestamp FROM my_table; 

I zawsze '0'. Czy ktoś może mi powiedzieć, co robię źle? (. Uwaga, mam dowód, że my_timestamp jest rzeczywiście w przeszłości)

Odpowiedz

7

Got go:

SELECT (julianday(CURRENT_TIMESTAMP) - julianday(my_timestamp)) * 86400.0) FROM my_table; 

julianday zwraca liczbę ułamkową dni od południa w Greenwich w dniu 24 listopada 4714 przed naszą erą Następnie biorę różnicę i mnożę przez liczbę sekund dziennie.

+0

Tak robi. Uruchamianie 'select (julianday (" 2015-01-01T12: 00: 00 ") - julianday (" 2015-01-01T11: 00: 00 ")) * 24;' daje jedną godzinę zgodnie z oczekiwaniami lub wystarczająco blisko: '0,99999999627471'. – Tom

+0

Jeśli otrzymujesz tylko różnicę dat, upewnij się, że dane wejściowe do 'julianday' w rzeczywistości są znacznikiem czasu, a nie tylko datownikiem. – Tom

3

Inny wariant z dokładnością do sekundy

CAST(strftime('%s', CURRENT_TIMESTAMP) as integer) - 
CAST(strftime('%s', my_timestamp) as integer) 
Powiązane problemy