假设您有一个包含年,月和日期值的列。有可能只获得一年吗?特别是我有
ALTER TABLE pmk_pp_disturbances.disturbances_natural ADD COLUMN sdate timestamp without time zone;
并且想要2004
中的2004-08-10 05:00:00
。这可以用Postgres完成,还是必须用脚本解析字符串?顺便说一句,关于什么时候“让数据库完成工作”与让本地计算机上运行的脚本完成工作的任何规则?我曾经听说查询数据库比用C / C ++编写的其他程序慢一般。
答案 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上忘了它。如果您正在使用后端服务器或管理应用程序,工具等,请使用它。