2016-06-05 10 views
0

Ich baue eine Karte in CartoDB, die Postgres verwendet. Ich versuche einfach, meine Daten als: 16.10.2014 anzuzeigen, aber nicht, weil Postgres einen unnötigen Zeitstempel in jeder Datumsspalte enthält.Postgres Timestamp bis heute

Soll ich die Spalte ändern, um den Zeitstempel zu entfernen, oder handelt es sich einfach um eine (korrekte) SELECT-Abfrage? Ich kann ohne Probleme Aufzeichnungen aus einem Datumsbereich SELECT:

SELECT * FROM mytable 
WHERE myTableDate >= '2014-01-01' AND myTableDate < '2014-12-31' 

jedoch meine Daten in meinem CartoDB erscheinen Karten wie: 2014-10-16T00: 00: 00Z und ich versuche nur die Pop-ups zu bekommen auf meine Karten zu lesen: 16.10.2014.

Jede Hilfe wäre willkommen - Danke!

+0

Daten in CartoDB sind in der Tat 'TIMESTAMP MIT ZEITZONE 'Typ, so wie @Craig vorgeschlagen, dass Sie' to_char' -Funktion verwenden müssen, um Ihr Datum im Formular zu formatieren funktioniert besser für Sie in Infofenstern oder Etiketten angezeigt werden. –

Antwort

1

Sie verwechseln Speicher mit Display.

Speichern Sie einen Zeitstempel oder ein Datum, je nachdem, ob Sie Zeit benötigen oder nicht.

Wenn Sie eine formatierte Ausgabe wünschen, fragen Sie die Datenbank nach formatierter Ausgabe mit to_char, z.

SELECT col1, col2, to_char(col3, 'DD-MM-YY'), ... FROM ...; 

Siehe the PostgreSQL manual.

Es gibt keine Möglichkeit, ein benutzerdefiniertes Datumsausgabeformat festzulegen. Datumsangaben werden immer im ISO-Format ausgegeben. Wenn Sie mit PostgreSQL andere Formate angeben können, ohne den SQL-Abfragetext zu ändern, werden Client-Treiber und Anwendungen, die das vom Protokoll angegebene Datumsformat erwarten, wirklich verwechselt und etwas völlig anderes erhalten.

0

Sie haben zwei grundlegende Optionen.

1 Ändern Sie die Spalte von einer Zeitmarke in eine Datumsspalte. 2 Bis heute in Ihrer SQL-Abfrage (d. H. Mytimestamp :: date funktioniert).

Im Allgemeinen, wenn dies ein Präsentationsproblem ist, denke ich normalerweise nicht, dass das ein guter Grund ist, sich mit der Datenbankstruktur herumzuärgern. Dies wird besser durch die clientseitige Verarbeitung oder das Einbetten einer SQL-Abfrage gehandhabt. Auf der anderen Seite, wenn es sich um ein semantisches Problem handelt, möchten Sie vielleicht Ihre Datenbankstruktur erneut aufsuchen.

+0

Ok danke Chris. Ich habe versucht, Casting wie Sie vorgeschlagen und kann dies nicht zur Arbeit bringen. Ich probiere das gerade in CartoDB in ihrem Popup-Fenster auf ihren Karten aus. Ich habe verschiedene Varianten von CAST (myTableDate AS DATE) und so weiter ausprobiert, aber kein Glück. – enjoypb

+0

Vielleicht macht Cartodb seine eigene interne Verarbeitung? –

+0

vielleicht Ihre Frage zu ändern, um die \ d-Ausgabe der beleidigenden Tabelle aufzunehmen? –