【问题标题】:How to get datetime from interval in vertica如何从vertica中的间隔获取日期时间
【发布时间】:2018-06-01 17:45:01
【问题描述】:

我是 Vertica 的新手。

我正在尝试获取所提供秒数的日期时间。

我有 1980-01-01 的秒值。

当我这样尝试时:

\set interval '''1199283171.887953002212558175021 SECOND'''
SELECT DATE('1980-01-01') + INTERVAL :interval 

我得到了我的输出:

2018-01-01 14:12:51.887953

(其中一个秒值设置为可变间隔。在 Linux putty 中尝试)

但我想为表中的 100 条记录使用它。这仅适用于单输入。 我试过了,但没有得到它。

我怎样才能为所有值做到这一点?

【问题讨论】:

标签: sql vertica vsql


【解决方案1】:

如果我的理解正确,你有一百倍的浮点值和秒数,这意味着自 '1980-01-01 00:00:00' 以来经过的秒数可能是 UTC。

我发现了三种方法 - 正如您在此处看到的,使用 10 行示例表。

我只是懒惰,在您的初始秒值上添加了 > 次 3600 秒。使其可读,因为结果时间戳中的小时变化。如您所见,表达式都返回相同的结果。

会有帮助吗?

WITH input(secs) AS (
          SELECT 1199283171.887953002212558175021 + 0 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 1 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 2 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 3 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 4 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 5 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 6 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 7 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 8 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 9 * 3600
)   
SELECT
  secs
, '1980-01-01'::TIMESTAMP + (secs::VARCHAR(32)||' SECOND')::INTERVAL     AS add_interval
, '1980-01-01'::TIMESTAMP + (secs/86400)                                 AS add_day_fraction
, TIMESTAMPADD(MICROSECOND,(1000000*secs)::INT, '1980-01-01'::TIMESTAMP) AS using_function
FROM input;
               secs               |        add_interval        |      add_day_fraction      |       using_function       
----------------------------------+----------------------------+----------------------------+----------------------------
 1199283171.887953002212558175021 | 2018-01-01 14:12:51.887953 | 2018-01-01 14:12:51.887953 | 2018-01-01 14:12:51.887953
 1199286771.887953002212558175021 | 2018-01-01 15:12:51.887953 | 2018-01-01 15:12:51.887953 | 2018-01-01 15:12:51.887953
 1199290371.887953002212558175021 | 2018-01-01 16:12:51.887953 | 2018-01-01 16:12:51.887953 | 2018-01-01 16:12:51.887953
 1199293971.887953002212558175021 | 2018-01-01 17:12:51.887953 | 2018-01-01 17:12:51.887953 | 2018-01-01 17:12:51.887953
 1199297571.887953002212558175021 | 2018-01-01 18:12:51.887953 | 2018-01-01 18:12:51.887953 | 2018-01-01 18:12:51.887953
 1199301171.887953002212558175021 | 2018-01-01 19:12:51.887953 | 2018-01-01 19:12:51.887953 | 2018-01-01 19:12:51.887953
 1199304771.887953002212558175021 | 2018-01-01 20:12:51.887953 | 2018-01-01 20:12:51.887953 | 2018-01-01 20:12:51.887953
 1199308371.887953002212558175021 | 2018-01-01 21:12:51.887953 | 2018-01-01 21:12:51.887953 | 2018-01-01 21:12:51.887953
 1199311971.887953002212558175021 | 2018-01-01 22:12:51.887953 | 2018-01-01 22:12:51.887953 | 2018-01-01 22:12:51.887953
 1199315571.887953002212558175021 | 2018-01-01 23:12:51.887953 | 2018-01-01 23:12:51.887953 | 2018-01-01 23:12:51.887953

【讨论】:

  • 我用我的表格输入修改了它,它工作了。太好了……谢谢……!!
猜你喜欢
  • 2012-05-06
  • 2021-06-18
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多