sql >> Database >  >> RDS >> Oracle

oracle sql vind tijdsverschil (beide tijd in string)

Je hebt een gebrekkig ontwerp .

  • Je mag nooit een datetime store opslaan waarde als tekenreeks .
  • DATUM heeft altijd zowel datum- als tijdelementen, dus het is niet nodig om het tijdelement apart op te slaan.

Hoe dan ook, als tijdelijke oplossing moet je eerst de tekenreeks converteren naar datum en dan de duur vinden in seconden , voeg de seconden toe aan TRUNC(SYSDATE) , dan is de rest eenvoudig datumopmaak .

Bijvoorbeeld,

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>



  1. Om de specifieke strings uit de gegeven string in Oracle te extraheren:

  2. Hoe parameter doorgeven aan sql 'in'-instructie?

  3. Client succesvol verbinden met MySQL-server

  4. Postgresql regexp_matches inside view retourneert altijd null wanneer gevraagd vanuit PHP