可以使用Postgres仅从场中获取日期的一部分吗?

时间:2015-08-04 22:46:10

标签: python postgresql

假设您有一个包含年,月和日期值的列。有可能只获得一年吗?特别是我有

ALTER TABLE pmk_pp_disturbances.disturbances_natural ADD COLUMN sdate timestamp without time zone;

并且想要2004中的2004-08-10 05:00:00。这可以用Postgres完成,还是必须用脚本解析字符串?顺便说一句,关于什么时候“让数据库完成工作”与让本地计算机上运行的脚本完成工作的任何规则?我曾经听说查询数据库比用C / C ++编写的其他程序慢一般。

3 个答案:

答案 0 :(得分:2)

您可以使用extract

SELECT extract('year' FROM sdate) FROM pmk_pp_disturbances.disturbances_natural;

对于许多查询,值得研究数据库是否可以根据需要执行数据转换。话虽如此,它还取决于您的应用程序将对数据执行的操作,因此需要权衡数据是应该由数据库还是应用程序完成。

答案 1 :(得分:0)

SELECT date_part('year', your_column) FROM your_table;

答案 2 :(得分:-3)

我认为不是。您被迫读取列的整个值。您可以将日期分成几列,一个用于年份,另一个用于月份等,或者如果您想要积极的空间优化,则将日期存储在整数格式中。但它会使数据库在可扩展性和修改方面做得最差。

数据库很慢,您必须承担它,但它们提供了最难处理的C / C ++。

如果您认为制作游戏并保存“保存游戏”,在SQL上忘了它。如果您正在使用后端服务器或管理应用程序,工具等,请使用它。