in postgres, können Sie die Standardformatierung für einen Zeitstempel festlegen, nach Sitzung oder global?

8

Ist es in Postgres möglich, die Standardformatmaske für einen Zeitstempel zu ändern?

kommt jetzt als

zurück %Vor%

Ich möchte eine Auflösung in dieser Minute:

%Vor%

Ich weiß, dass ich dies für einzelne Spalten mit to_char() as oder mit einem substr() von der empfangenden App tun kann, aber wenn es anfangs richtig formatiert wird, würde viel Arbeit gespart und eine Menge Fehler reduziert.

    
cc young 04.01.2012, 07:45
quelle

3 Antworten

4

In Postgres können Sie die Standardformatmaske für Datumsangaben ändern, indem Sie die Option set datestyle verwenden. Die verfügbaren Optionen finden Sie hier (siehe 8.5.2. Datum / Uhrzeit-Ausgabe) .

Leider enthalten alle verfügbaren Optionen die Anzahl der Sekunden - Sie müssen sie daher entweder in der Abfrage oder im Anwendungscode (falls zutreffend) neu formatieren.

    
Mark Bannister 04.01.2012, 09:51
quelle
8

In PostgreSQL ist die Formatierung von Zeitstempeln unabhängig vom Speicher. Eine Antwort besteht darin, to_char zu verwenden und den Zeitstempel in dem Format zu formatieren, in dem Sie ihn benötigen, zum Beispiel:

%Vor%

Aber wenn Sie die Standardformatierung einstellen müssen:

Ändern Sie das postgresql-Timestamp-Format global:

Sehen Sie sich Ihre Zeitzone an, führen Sie dies als SQL-Abfrage aus:

%Vor%

Wenn Sie current_timestamp ausdrucken, sehen Sie Folgendes:

%Vor%

Das -04 am Ende ist Ihre Zeitzone in Bezug auf UTC. Sie können Ihre Zeitzone ändern mit:

%Vor%

Dann:

%Vor%

Beachten Sie also die -07 , das heißt, wir Pacific ist 7 Stunden von UTC entfernt. Wie mache ich diese unansehnliche Zeitzone verschwinden? Eine Möglichkeit besteht darin, nur eine Tabelle zu erstellen, standardmäßig wird ein Zeitstempel ohne Zeitzone verwendet:

%Vor%

Dann, wenn Sie einen Zeitstempel zu dieser Tabelle hinzufügen und daraus auswählen

%Vor%

yay, keine Zeitzone am Ende. Aber Sie möchten mehr Kontrolle darüber, wie der Zeitstempel standardmäßig angezeigt wird! Sie könnten so etwas tun:

%Vor%

Es ist ein Textfeld, das Ihnen mehr Kontrolle darüber gibt, wie es standardmäßig angezeigt wird, wenn Sie select somecolumns from sometable ausführen. Beachten Sie, dass Sie eine Zeichenfolge in Zeitstempel umwandeln können:

%Vor%

Sie könnten einen current_timestamp auf timestamp anwenden, wodurch die Zeitzone entfernt wird:

%Vor%

Sie können die Zeitzone wie folgt loswerden:

%Vor%

Aber wenn Sie die Zeitzone wirklich zurück wollen, können Sie das tun:

%Vor%

Sie können mit extrahieren, was Sie wollen:

%Vor%

Und diese Monstrosität:

%Vor%     
Eric Leschinski 24.10.2012 01:54
quelle
3

to_char() wird verwendet, um ein String-Literal zu erstellen. Wenn Sie einen anderen Zeitmarkenwert möchten, verwenden Sie:

%Vor%

Für eine Eingabe Maske können Sie verwenden:

%Vor%

Cast to timestamp without time zone durch Anhängen von ::timestamp .

Nach meinem Wissen gibt es in PostgreSQL keine Einstellung, die standardmäßig Sekunden von Zeitstempel-Literalen abschneidet.

    
Erwin Brandstetter 04.01.2012 09:26
quelle

Tags und Links