Postregsql Data di Differenza sulla base di secondi

Come posso trovare la differenza tra due date in termini di secondi in PostgreSQL?

C’è nessuna funzione per dare data la differenza in termini di secondi come in SQL-Server:

DATE_DIFF(second, '2011-12-30 09:55:56', '2011-12-30 08:54:55')

Prego, aiutami ad avere questo PostgreSQL troppo

 

One Reply
  1. 36

    Prima, le date devono essere i valori di timestamp tipo (quindi aggiungere ::timestamp se si indica solo loro come valori letterali stringa).

    Se si sottrae due timestamp, il risultato è di interval tipo, che descrive una durata di tempo (in ore, minuti, secondi, etc.) È possibile utilizzare extract(epoch from interval_value) per convertire l’intervallo in un numero assoluto di secondi.

    Così, mettendo insieme tutti questi elementi:

    select extract(epoch from ('2011-12-30 09:55:56'::timestamp - '2011-12-30 08:54:55'::timestamp));

    Ricordare che il ::timestamp è solo necessario per convertire la stringa letterale di un timestamp: non è necessario se si utilizza il valore di una colonna di tipo timestamp, per esempio.

    • Io in realtà preferisco ANSI letterali: timestamp '2011-12-30 09:55:56' invece di lanciare un valore di stringa (soprattutto perché lavorano in quasi tutti i DBMS e non devo ricordare il DBMS specifico sintassi)
    • Grazie araqnid , stavo cercando di estrarre il secondo dopo sottrarre timestamp , dimenticato su di estrazione epoca sottratta timestamp. Grazie 4 risposta perfetta.
    • Buon punto, ma un database che non supportano questo tipo di sintassi di SQL Server, che io lavoro con un sacco. Ricordo sempre cast(value as type) come la sintassi standard, che è un po ‘ prolisso.
    • Ma penso che il cast sintassi è influenzato dalle impostazioni di lingua, giusto? Quindi dipende dalla configurazione del sistema che formato stringa letterale dovrebbe essere?
    • Ero convinto che in postgresql, cast(value as type), type value e value::type sono tutti equivalenti. Naturalmente, il datestyle impostazione influisce sull’interpretazione, io non credo che lo stile di scrittura cast di rilievo.
    • Inoltre, il type value sintassi non sempre in forma: ad esempio date testfunc() è un errore di sintassi, mentre testfunc()::date e cast(testfunc() as date) non sono

Lascia un commento