2017-03-21 5 views
1

Das Muster 'YYYY-MM-DD HH24:MI:SS' bekommt Zeit bis Sekunden Auflösung.konvertieren Zeit auf 100/10 Sekunde Auflösung

select to_char('2017/02/20 08:23:58.267'::timestamp, 'YYYY-MM-DD HH24:MI:SS'); 
=> 2017-02-20 08:23:58 

Welche Muster würden zu Zehntelsekunden und Hundertstelsekunden Auflösung bekommen?

100th second resolution => 2017-02-20 08:23:58.27 
10th second resolution => 2017-02-20 08:23:58.3 

konnte nicht herausfinden, von der Dokumentation here

+0

Sie können es einfach in 'timestamp (2)' oder 'timestamp (1)' 'umwandeln. Das * schneidet * die Präzision automatisch ab. – pozs

Antwort

2

SQL DEMO

WITH cte as (
    SELECT '2017/02/20 08:23:58.267'::timestamp as t1 
)  
SELECT to_char(t1, 'YYYY-MM-DD HH24:MI:SS'), 
     to_char(t1, 'YYYY-MM-DD HH24:MI:SS MS') millisecond, 
     to_char(t1, 'YYYY-MM-DD HH24:MI:SS US') microsecond  
FROM cte 

OUTPUT

enter image description here

können Sie date_part('microseconds', t1) und und date_part('seconds', t1) mit etwas Mathematik verwenden, um den gewünschten Wert zu runden.

2

'YYYY-MM-DD HH24:MI:SS.MS' würde '2017.02.20 08: 23: 58,270'. Sie können diese Zeichenfolge einfach um ein oder zwei Zeichen kürzen. Oder für eine genaue Rundung, könnten Sie eine separate Konvertierung tun das Muster unter Verwendung 'SS.MS', konvertieren diese Zeichenfolge mit einem Schwimmer, rund, konvertieren zurück in eine Zeichenfolge, und fügen Sie, dass auf das Ergebnis der to_char(ts, 'YYYY-MM-DD HH24:MI.')

Wenn es eine Option , wie es scheint, wäre es einfacher, nur mit drei Dezimalstellen zu gehen ...

Verwandte Themen