2017-03-16 3 views
2

Sie müssen Zeitstempel mit 1/1000 Sekunde Auflösung auf 1/100 Auflösung konvertieren. Ich könnte möglicherweise to_char(timestamp, text) Formatierungsfunktion für diesen Zweck verwenden, jedoch benötigen Sie Hilfe mit text hier verwendet werden.Zeitstempelformatierung - von 1/1000stel Sekunde bis 1/100 Sekunde

Eingabetabelle -

+-------------------------+ 
|  ms1000_val  | 
+-------------------------+ 
| 2017/02/20 08:27:17.899 | 
| 2017/02/20 08:23:43.894 | 
| 2017/02/20 08:24:41.894 | 
| 2017/02/20 08:28:09.899 | 
+-------------------------+ 

Ausgabetabelle

+------------------------+ 
|  ms100_val  | 
+------------------------+ 
| 2017/02/20 08:27:17.89 | 
| 2017/02/20 08:23:43.89 | 
| 2017/02/20 08:24:41.89 | 
| 2017/02/20 08:28:09.89 | 
+------------------------+ 
+0

nur verwenden 'timestamp (2)' –

Antwort

6

(Anmerkung die hier Zeitstempel werden als varchar gespeichert) Sie können ihn in Klammern angeben, wie hier:

t=# select now()::timestamp(2); 
      now 
------------------------ 
2017-03-16 09:55:21.15 
(1 row) 

a s OP bemerkte http://rextester.com/CBZ17212 anderes Ergebnis erzeugt läuft dann in psql:

t=# CREATE TABLE Table1 
t-#  ("ms1000_val" varchar(23)) 
t-# ; 
CREATE TABLE 
t=# 
t=# INSERT INTO Table1 
t-#  ("ms1000_val") 
t-# VALUES 
t-#  ('2017/02/20 08:27:17.892'), 
t-#  ('2017/02/20 08:23:43.891'), 
t-#  ('2017/02/20 08:24:41.897'), 
t-#  ('2017/02/20 08:28:09.893') 
t-# ; 
INSERT 0 4 
t=# select ms1000_val::timestamp(2) as time_formatted 
t-#  from Table1; 
    time_formatted 
------------------------ 
2017-02-20 08:27:17.89 
2017-02-20 08:23:43.89 
2017-02-20 08:24:41.9 
2017-02-20 08:28:09.89 
(4 rows) 
+0

überprüfen Sie diese Code-Wand - es gibt nicht die gleichen Ergebnisse wie das, was Sie oben haben - streift den ms-Teil komplett ab - http://rextester.com/CBZ17212 – user3206440

+0

Sie sagten "zu konvertieren Zeitstempel mit 1/1000 Sekunde "nicht varchar ... –

+0

glücklich, korrigiert zu werden. Die Frage wurde aktualisiert. – user3206440

1

Diesen, ich benutze to_char und substr und ich bekomme das Format jjjj/MM/dd ......

select substr(to_char(now(),'yyyy/MM/dd HH:mm:ss MS'),0,length('yyyy/MM/dd HH:mm:ss MS')+1);