2013-07-17 13 views
5

È possibile ottenere la differenza (in secondi) tra due valori TIMESTAMP in Sqlite3?Differenza in secondi tra i timestamp in Sqlite3

Per esempio, ho provato la seguente query:

SELECT CURRENT_TIMESTAMP - my_timestamp FROM my_table; 

E ottengo sempre '0'. Qualcuno può dirmi cosa sto facendo di sbagliato? (. Nota, Ho verificato che my_timestamp è infatti in passato)

risposta

7

capito:

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

julianday restituisce il numero frazionario di giorni da mezzogiorno a Greenwich il 24 novembre, 4714 aC Prendo quindi la differenza e moltiplichiamo per il numero di secondi al giorno.

+0

Si fa. Esecuzione 'select (julianday (" 2015-01-01T12: 00: 00 ") - julianday (" 2015-01-01T11: 00: 00 ")) * 24;' produce un'ora come previsto, o abbastanza vicino ad esso: '0.99999999627471'. – Tom

+0

Se stai ricevendo solo una differenza di date, assicurati che l'input di 'julianday' sia in realtà un timestamp e non solo un datestamp. – Tom

3

Un'altra variante l'approssimazione secondo

CAST(strftime('%s', CURRENT_TIMESTAMP) as integer) - 
CAST(strftime('%s', my_timestamp) as integer) 
Problemi correlati