Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Postgres可以只从字段中提取日期的一部分吗?_Python_Postgresql - Fatal编程技术网

Python Postgres可以只从字段中提取日期的一部分吗?

Python Postgres可以只从字段中提取日期的一部分吗?,python,postgresql,Python,Postgresql,假设有一列包含年、月和日期的值。有可能只得到一年吗?尤其是我 ALTER TABLE pmk_pp_扰动。扰动自然添加不带时区的sdate列时间戳 只需要2004-08-10 05:00:00中的2004。这可以通过Postgres完成,还是必须由脚本解析字符串?顺便问一下,关于何时“让数据库完成工作”与让本地计算机上运行的脚本完成工作,有什么规则吗?我曾经听说查询数据库通常比用C/C++编写的其他程序慢。您可以使用: 对于许多查询,值得研究数据库是否可以根据需要执行数据转换。这就是说,这还取决

假设有一列包含年、月和日期的值。有可能只得到一年吗?尤其是我

ALTER TABLE pmk_pp_扰动。扰动自然添加不带时区的sdate列时间戳

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

您可以使用:


对于许多查询,值得研究数据库是否可以根据需要执行数据转换。这就是说,这还取决于应用程序将如何处理数据,因此这是一种折衷,即工作是由数据库还是在应用程序中完成。

我认为不是。您必须读取一列的整个值。您可以将日期分为几列,一列为年份,另一列为月份,等等,如果您希望进行积极的空间优化,也可以将日期存储为整数格式。但在可伸缩性和修改方面,它将对数据库造成最坏的影响

SELECT date_part('year', your_column) FROM your_table;
您必须假设,数据库速度很慢,但它们提供了最难用C/C++完成的任务


如果你想制作一个游戏并在SQL上保存你的“保存游戏”,那就忘了它吧。如果您正在做后端服务器或管理应用程序、工具等,请使用它。

提取
操作员可能就是您想要的:数据库与脚本之间没有规则,速度通常不是决定的标准。数据库允许您执行非常复杂的数据分析,如果设置正确,它们是安全的,并且允许并发访问。用python脚本试试看。。。所以这完全取决于你需要什么;对于单用户独立应用程序,不要使用数据库,因为任何超出此范围的应用程序都有很好的外观。为什么不使用
date\u trunk()
?它在我的程序中起作用。根据文档,date_trunc实际上会截断到指定的精度。所以一般来说,这不是你要问的——你希望数据的一部分保持不变(这就是extract的作用),你不希望数据被Postgres截断/修改。到底为什么
extract'year'
返回一个浮点而不是整数?如果你只是“这么想”,就不要回答问题。我知道有一个非常简单的解决方案,比将单个日期部分存储为整数要好得多。从定义上来说,数据库也不是“慢”的,这完全取决于你的数据以及这些数据和服务器的组织方式。尤其是在回答问题之前快速搜索一下谷歌就会发现这很容易做到。顺便说一句,建议将日期分成几列是一个糟糕的建议,这与您为提高效率和方便查询而应该做的恰恰相反。此外,严重的是“数据库运行缓慢”。大多数时候,“我可以在客户机上做得更好”意味着他们不知道如何正确使用服务器,我得到了报酬,可以进来清理由此产生的火车残骸怪物。不过,我同意,尝试在DB中构建一个游戏并不是一个好主意。
SELECT date_part('year', your_column) FROM your_table;