在 DBeaver (SQL) 的时间戳列中加减 1 小时

Add and subtract 1 hour from Timestamp column in DBeaver (SQL)

我有一个 table 列 'Timestamp'。我想创建 2 个包含该时间戳的 -1 小时和 +1 小时的列。

这是时间戳的格式:2020-08-31 11:05:55 我想再获得 2 列显示 -1 小时和 +1 小时:2020-08-31 10:05:55 和 2020-08-31 12:05:55

谢谢!

如果您的 DBMS 是 Microsoft SQL 服务器,

DATEADD()]1 可能是您的最佳选择。如果您使用的是 Oracle 之类的软件,a_horse_with_no_name 的 ANSI 区间解决方案是一个很好的、易于阅读的选项。

例如下面的代码产生,

SELECT '2020-08-31 11:05:55' AS time_stamp, 
   DATEADD(hour, 1, '2020-08-31 11:05:55') plus_one_hour, 
   DATEADD(hour, -1, '2020-08-31 11:05:55') minus_one_hour;

--输出

      plus_one_hour              time_stamp                minus_one_hour
'2020-08-31 12:05:55.000'   '2020-08-31 11:05:55.000'     '2020-08-31 10:05:55.000'

在标准 ANSI SQL 中,您可以简单地减去一个区间:

select the_column - interval '1' hour as one_hour_before,
       the_column, 
       the_column + interval '1' hour as one_hour_after
from the_table
where ....

a_horse_with_no_name 是对的。标准方法是 add/subtract INTERVALs.

但是 Vertica 日期算法提供了一些非常简单的快捷方式...

当您 add/subtract 一个整数值时,它被解释为 的天数:

    SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP+1, CURRENT_TIMESTAMP-1;
           ?column?            |           ?column?            |           ?column?            
-------------------------------+-------------------------------+-------------------------------
 2020-09-03 00:38:54.781675-04 | 2020-09-04 00:38:54.781675-04 | 2020-09-02 00:38:54.781675-04

如果你想add/subtract:

  • 小时你必须使用1/24,
  • 分钟你必须使用1/1440
  • 你必须使用1/86400.

例如:

SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP+1/24, CURRENT_TIMESTAMP-1/24;
           ?column?            |           ?column?            |           ?column?            
-------------------------------+-------------------------------+-------------------------------
 2020-09-03 00:38:54.781675-04 | 2020-09-03 01:38:54.781675-04 | 2020-09-02 23:38:54.781675-04

SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP+1/1440, CURRENT_TIMESTAMP-1/1440;
           ?column?            |           ?column?            |           ?column?            
-------------------------------+-------------------------------+-------------------------------
 2020-09-03 00:38:54.781675-04 | 2020-09-03 00:39:54.781675-04 | 2020-09-03 00:37:54.781675-04