- https://in.mathworks.com/matlabcentral/answers/1660440-postgresql-database-with-time-series-results-with-nat
- https://in.mathworks.com/help/database/ug/databaseimportoptions.html
数据导入从PostgreSQL的NaT
5视图(30天)
显示旧的评论
我需要从Postgres数据库获取数据。一个列的表我查询类型“时区时间戳”。这一列中的值可以有分数秒到微秒。我是连接到数据库服务器使用本机postgresql数据源。我从这个表做一个简单的获取。时间戳列中的值是一个整体的秒数(如31 - 1月- 2023 17:02:00.000000)正确地出现在返回的matlab表对象,但是,时间戳有一个非零部分组件(例如:31 - 1月- 2023 17:02:00.001234),导入的值是“NaT”。
如果我在pgAdmin检查原始表,所有的时间戳值正确显示。我怎么能确保所有进口时间戳的值是正确的吗?
我是9.3.25 Postgres版本
这是我在做什么(准确的数据库名称、密码等混淆)。
供应商=PostgreSQL的;
dbname =“target_database”;
选择= databaseConnectionOptions (“本地”、供应商);
选择= setoption(选择,…
“DataSourceName”,“PostgreSQLDataSource”,…
“数据库名”dbname,…
“服务器”,“localhost”,…
“PortNumber”,5432);
saveAsDataSource(选择);
% %连接到数据库
康涅狄格州= postgresql (“PostgreSQLDataSource”,“myuser”,“我的密码”);
%设置查询在数据库上执行
查询=“select * from target_index_table”;
% %执行查询和获取结果
data =获取(康涅狄格州、查询);
% %关闭数据库连接
关上(康涅狄格州)
% %明显的变量
清晰的康涅狄格州查询
0评论
答案(1)
HimeshNayak
2023年3月17日
嗨,保罗,
根据我的理解,当你从PostgreSQL数据库导入数据,“时间戳”值与一个非零部分组件转换为“NaT”。
所有的零次秒级精度的时间戳是返回的司机比的值在不同的格式有非零次秒级精度。当我们将这些字符串值转换成日期时间,datetime函数选择其中一种格式,然后设置任何值,不符合格式NaT。
现在的解决方法我建议使用“databaseImportOptions”。您可以使用的选项改变数据类型从一个datetime“字符串”或“char向量”。这将允许您在原始文本值从数据库中返回。如果你需要datetime值,你可以纠正不一致的格式一旦进口,然后将它们传递给datetime函数。
有关更多信息,请参阅以下链接:
问候
HimeshNayak