Frage

Was ist das Äquivalent von sortierbar Datetime / Zeitstempel varchar in PostgreSQL?

Console.WriteLine("{0:s}", DateTime.Now);

Probe Format Ausgabe:

2000-05-04T15:30:59

Dies funktioniert, SELECT jetzt :: varchar- Ausgang ist ‚2009-03-25‘, aber nur für Datumsart, fragen, was ist das Äquivalent für Zeitstempel.

Beachten Sie, ich weiß, Datum an und für sich sortierbar ist, begegne ich nur ein Datetime-Inkompatibilität zwischen .NET und Mono, also werde ich nur Transport (Remoting) Datum / Zeitstempel-Typen als varchar, Datenbanktyp zugrunde liegt, ist nach wie vor die richtige Datum / Zeitstempel Feldtyp. Für diejenigen, die das gleiche Problem auftreten, ist das Werk um das Datum zu varchar zu werfen, wenn die Abrufen von Daten, und den varchar zurück zum Zeitpunkt Gießen beim Speichern.

War es hilfreich?

Lösung

Im Grunde verwenden Sie nur to_char Funktion.

Das Problem mit Ihrem Beispiel ist, dass während theoretisch sollte diese Arbeit:

select to_char( now(), 'YYYY-MM-DDTHH24:MI:SS' );

In der Realität - PostgreSQL kann nicht "verstehen", dass T-Separator ist und HH24 ist nächste "Tag" und druckt es wie:

2009-03-24THH24:32:45

Aber Sie können es ändern, relativ einfach:

select translate( to_char( now(), 'YYYY-MM-DD HH24:MI:SS' ), ' ', 'T' );

, welche Ausgänge angeforderten Format:

2009-03-24T21:33:21

Natürlich erinnern immer übersetzen zu verwenden, wird alt ziemlich schnell, so stattdessen können Sie Ihre eigene Funktion erstellen und verwenden stattdessen:

create function custom_ts(timestamptz) returns text as $$
  select translate( to_char( $1, 'YYYY-MM-DD HH24:MI:SS' ), ' ', 'T' );
$$ language sql;
# select custom_ts(now());
      custom_ts
---------------------
 2009-03-24T21:35:47
(1 row)

Andere Tipps

Oder einfach:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD"T"HH24:MI:SS');
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top