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

你有两个基本的选择。

1 将列从时间戳更改为日期列。2 在您的 SQL 查询中强制转换为日期(即 mytimestamp::date 有效)。

一般来说,如果这是一个演示问题,我通常不认为这是一个解决数据库结构的好理由。这最好通过客户端处理或在 SQL 查询中进行转换来处理。另一方面,如果问题是语义问题,那么您可能需要重新访问您的数据库结构。

于 2016-06-05T03:47:14.737 回答