首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自PostgreSQL的八度数据库包时间戳

来自PostgreSQL的八度数据库包时间戳
EN

Stack Overflow用户
提问于 2015-12-17 22:15:42
回答 2查看 166关注 0票数 1

倍频程数据库包确定以倍频程作为8字节时间值的正负差值返回PostgreSQL时间戳到2000-01-01 00:00 (int64标量,表示微秒)

例如,timestamp 2015-12-04 11:22:08返回502543328000000,单位为Octave。

如果我打算用Octave绘制时间序列,如何将其转换为更具可读性和可用性的形式?

EN

回答 2

Stack Overflow用户

发布于 2015-12-17 22:40:45

使用datestr。请注意,从datenum docs中可以看到,datestr需要以天为单位的序列日期编号,以及自0000年1月1日以来的日期

将日期/时间输入作为一个连续的天数返回,其中Jan 1,0000定义为第一天。

因此,首先,我们必须将您的PostgreSQL序列号转换为(a)天的单位而不是微秒,以及(b)从0000年而不是2000年开始。

代码语言:javascript
复制
timestamp = 502543328000000;                   % in microsecond since 2000
timestamp = timestamp / (1000000*60*60*24);    % Days since 2000
timestamp = timestamp + datenum([2000,1,1]);   % Days since 0000
datestr(timestamp, "yyyy-MM-dd HH:mm:ss")      % Formatted string
票数 0
EN

Stack Overflow用户

发布于 2021-05-13 02:13:22

在前面的答案中,datestr格式存在一个问题,即它返回月份而不是分钟和分钟。正确的格式可能是

代码语言:javascript
复制
timestamp = input_time;                   % in microsecond since 2000
timestamp = timestamp ./ (1000000*60*60*24);    % Days since 2000
timestamp = timestamp + datenum([2000,1,1]);   % Days since 0000
datestr(timestamp(i), "yyyy-mm-dd HH:MM:SS.FFF")      % Formatted string

其中,如果需要,FFF代表毫秒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34336750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档