Extraire le nombre total de secondes à partir d'un intervalle de type de données

Lors de la soustraction de timestamps la valeur de retour est une interval type de données. Est-il un moyen élégant pour convertir cette valeur en le nombre total de (milli/micro) secondes dans l'intervalle, c'est à dire un entier.

Suivantes pourraient travailler, mais c'est pas très jolie:

select abs( extract( second from interval_difference ) 
          + extract( minute from interval_difference ) * 60 
          + extract( hour from interval_difference ) * 60 * 60 
          + extract( day from interval_difference ) * 60 * 60 * 24
            )
  from ( select systimestamp - (systimestamp - 1) as interval_difference
           from dual )

Est-il plus élégant de la méthode dans SQL ou PL/SQL?

  • :quelque part j'ai trouvé ce ` select (TRUNC(SYSDATE) + out.interv ention - TRUNC(SYSDATE)) * 86400 from (select systimestamp -(systimestamp -1) comme interv ention de double )out"
  • depuis l'ajout de la déclaration de l'intervalle, en secondes, pour une précision fixe variable du numéro, la partie fractionnaire de la seconde est perdu dans la requête mentionné dans les commentaires
  • Bien que cela puisse ne pas sembler élégant, je préfère encore cette solution de base qu'il ne souffre pas de "ORA-01873: le leader de la précision de l'intervalle est trop petit" facilement.
InformationsquelleAutor Ben | 2012-04-10