迄今为止的 Postgres 时间戳

Postgres timestamp to date

我正在使用 Postgres 在 CartoDB 中构建地图。我只是想将我的日期显示为:10-16-2014 但是,由于 Postgres 在每个日期列中包含一个不需要的时间戳,所以无法显示。

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

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

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

如有任何帮助,我们将不胜感激 - 谢谢!

您有两个基本选择。

1 将该列从时间戳更改为日期列。 2 在您的 SQL 查询中投射到日期(即 mytimestamp::date 有效)。

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

您混淆了存储和显示。

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

如果需要格式化输出,请使用to_char向数据库请求格式化输出,例如

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

参见the PostgreSQL manual

无法设置用户指定的日期输出格式。日期始终以 ISO 格式输出。如果 PostgreSQL 允许您在不更改 SQL 查询文本的情况下指定其他格式,那么它确实会使期望协议指定的日期格式并得到完全不同的东西的客户端驱动程序和应用程序感到困惑。