sql >> Database teknologi >  >> RDS >> Oracle

formater interval med to_char

du kan støbe resultatet, hvis du vil have mindre præcision:

SQL> SELECT TO_DSINTERVAL('10 10:00:00') t_interval FROM dual;

T_INTERVAL
-----------------------------------------------------------
+000000010 10:00:00.000000000

SQL> SELECT CAST(TO_DSINTERVAL('10 10:00:00')
  2                 AS INTERVAL DAY(2) TO SECOND(3)) t_interval
  3    FROM dual;

T_INTERVAL
-----------------------------------------------------------
+10 10:00:00.000

Rediger følgende OP-kommentar:

Fra Oracle-dokumentationen (11gr1):

Intervaldatatyper har ikke formatmodeller. For at justere deres præsentation skal du derfor kombinere karakterfunktioner såsom EXTRACT og sammenkæde komponenterne.

Det ser ud til, at du bliver nødt til manuelt at bruge EXTRACT for at opnå det ønskede output:

SQL> SELECT to_char(extract(DAY FROM t_interval), 'fmS99999') || ' ' ||
  2         to_char(extract(HOUR FROM t_interval), 'fm00') || ':' ||
  3         to_char(extract(MINUTE FROM t_interval), 'fm00') || ':' ||
  4         to_char(extract(SECOND FROM t_interval), 'fm00.000')
  5    FROM (SELECT TO_DSINTERVAL('10 01:02:55.895') t_interval FROM dual)
  6  ;

TO_CHAR(EXTRACT(DAYFROMT_INTER
------------------------------
+10 01:02:55.895


Dette er ikke særlig elegant, men det ser ud til, at det er den eneste måde at håndtere mikrosekunders præcision på.



  1. konverter MySQL SET datatype til Postgres

  2. Hvordan opretter man tabel ved hjælp af sqlite-database i Android?

  3. Nummerseriegenerator-udfordringsløsninger – del 3

  4. Hvordan vælger man rækker, der har dagens tidsstempel?