0

Postgres を使用する CartoDB でマップを作成しています。私は単に日付を 10-16-2014 として表示しようとしていますが、Postgres にはすべての日付列に不要なタイムスタンプが含まれているため、表示できませんでした。

タイムスタンプを削除するために列を変更する必要がありますか、それとも単に (正しい) SELECT クエリの問題ですか? 問題なく日付範囲からレコードを選択できます。

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

ただし、私の日付は CartoDB マップに 2014-10-16T00:00:00Z のように表示され、マップのポップアップに 10-16-2014 を読み取らせようとしています。

助けていただければ幸いです - ありがとうございます!

4

2 に答える 2

2

ストレージとディスプレイを混同しています。

時間が必要かどうかに応じて、タイムスタンプまたは日付を保存します。

フォーマットされた出力が必要な場合は、データベースにフォーマットされた出力を要求しますto_char

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

PostgreSQL のマニュアルを参照してください。

ユーザー指定の日付出力形式を設定する方法はありません。日付は常に ISO 形式で出力されます。PostgreSQL で SQL クエリ テキストを変更せずに他の形式を指定できるようにすると、プロトコルが指定する日付形式を期待するクライアント ドライバーとアプリケーションが混乱し、まったく異なる結果が得られます。

于 2016-06-05T10:53:07.833 に答える
0

2 つの基本的なオプションがあります。

1 カラムをタイムスタンプから日付カラムに変更します。2 SQL クエリで日付にキャストします (つまり、mytimestamp::date が機能します)。

一般に、これがプレゼンテーションの問題である場合、それがデータベース構造をいじる正当な理由になるとは通常思いません。これは、クライアント側の処理または SQL クエリでのキャストによって適切に処理されます。一方、問題がセマンティックなものである場合は、データベース構造を再検討することをお勧めします。

于 2016-06-05T03:47:14.737 に答える