Postgres时间戳到目前为止

时间:2016-06-05 03:29:37

标签: postgresql cartodb

我在使用Postgres的CartoDB中构建地图。我只是试图将我的日期显示为:2014年10月16日,但是,因为Postgres在每个日期列中都包含一个不需要的时间戳,因此无法使用。

我应该更改列以删除时间戳,还是仅仅是(正确的)SELECT查询的问题?我可以从日期范围中选择记录没问题:

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

但是,我的日期在我的CartoDB地图中显示为:2014-10-16T00:00:00Z,我只想让我的地图上的弹出窗口显示为:10-16-2014。

任何帮助将不胜感激 - 谢谢!

2 个答案:

答案 0 :(得分:1)

您将存储与显示混淆。

存储时间戳或日期,具体取决于您是否需要时间。

如果您想要格式化输出,请向数据库询问带有to_char的格式化输出,例如

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

请参阅the PostgreSQL manual

无法设置用户指定的日期输出格式。日期始终以ISO格式输出。如果PostgreSQL允许您指定其他格式而不更改SQL查询文本,那么它真的会混淆客户端驱动程序和期望协议指定的日期格式的应用程序,并获得完全不同的内容。

答案 1 :(得分:0)

您有两个基本选项。

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

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