Oracle
 sql >> Base de données >  >> RDS >> Oracle

oracle sql trouver la différence de temps (les deux heures dans la chaîne)

Vous avez une conception défectueuse .

  • Vous ne devez jamais stocker une datetime valeur en tant que chaîne .
  • DATE a toujours des éléments de date et d'heure, il n'est donc pas nécessaire de stocker l'élément d'heure séparément.

Quoi qu'il en soit, comme solution de contournement, vous devez d'abord convertir la chaîne en date, puis trouver la durée en secondes , ajoutez les secondes à TRUNC(SYSDATE) , le reste est un simple formatage de la date .

Par exemple,

SQL> WITH sample_data AS(
  2  SELECT '21:30:03' START_TIME, '21:34:11' END_TIME FROM dual
  3  )
  4  SELECT start_time,
  5    end_time,
  6    TO_CHAR (TRUNC (SYSDATE) + (to_date(end_time, 'HH24:MI:SS') -
  7                                to_date(start_time, 'HH24:MI:SS')
  8                               ) , 'hh24:mi:ss' ) duration
  9  FROM sample_data;

START_TI END_TIME DURATION
-------- -------- --------
21:30:03 21:34:11 00:04:08

SQL>