时间间隔表达式

  • interval_expr是一个时间间隔表达式,其语法表示为:
INTERVAL expr unit

说明:expr为一个表达式,unit为expr的单位。unit允许的取值和对应的expr常量取值格式可参考表1。expr支持运算表达式、列引用和绑定参数用法。

注:若expr值的组成部分个数少于unit对应的标准形式时,将expr值的各个划分部分从右到左依次填充到unit对应标准形式中。例如:对于时间单位unit为DAY_SECOND,若expr为‘1 10’,则最终表示的时间间隔值为‘0 00:01:10’。

通常时间间隔表达式用于一些特定的时间计算函数,例如DATE_ADD()和DATE_SUB()等。

表 1 时间间隔表达式中unit的取值和对应的expr的表达格式

unit取值

expr取值格式

MICROSECOND

MICROSECONDS

SECOND

SECONDS

MINUTE

MINUTES

HOUR

HOURS

DAY

DAYS

WEEK

WEEKS

MONTH

MONTHS

QUARTER

QUARTERS

YEAR

YEARS

SECOND_MICROSECOND

'SECONDS.MICROSECONDS'

MINUTE_MICROSECOND

'MINUTES:SECONDS.MICROSECONDS'

MINUTE_SECOND

'MINUTES:SECONDS'

HOUR_MICROSECOND

'HOURS:MINUTES:SECONDS.MICROSECONDS'

HOUR_SECOND

'HOURS:MINUTES:SECONDS'

HOUR_MINUTE

'HOURS:MINUTES'

DAY_MICROSECOND

'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS'

DAY_SECOND

'DAYS HOURS:MINUTES:SECONDS'

DAY_MINUTE

'DAYS HOURS:MINUTES'

DAY_HOUR

'DAYS HOURS'

YEAR_MONTH

'YEARS-MONTHS'

示例:

openGauss=# create database test_db dbcompatibility 'B';
CREATE DATABASE
openGauss=# \c test_db 
test_db=# set dolphin.b_compatibility_mode to on;
SET
test_db=# select date_add('1997-12-31 23:59:59',INTERVAL 1 MICROSECOND);
          date_add          
----------------------------
 1997-12-31 23:59:59.000001
(1 row)

test_db=# select date_add('1997-12-31 23:59:59',INTERVAL '1.111' SECOND_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 00:00:00.111
(1 row)

test_db=# select '1997-12-11' + interval '1 10' day_second;
      ?column?       
---------------------
 1997-12-11 00:01:10
(1 row)

-- 运算表达式
test_db=# select '1997-12-11' + interval 1 + 2 * 3 day;
  ?column?  
------------
 1997-12-18
(1 row)

-- 列引用
test_db=# create table t1 (c1 int);
CREATE TABLE
test_db=# insert into t1 values(1);
INSERT 0 1
test_db=# select '1997-12-11' + interval c1 + 2 year from t1;
  ?column?  
------------
 2000-12-11
(1 row)

-- 绑定参数
test_db=# prepare stmt as 'select ? + interval ? hour';
PREPARE
test_db=# execute stmt('1997-12-11', 20);
      ?column?       
---------------------
 1997-12-11 20:00:00
(1 row)
意见反馈
编组 3备份
    openGauss 2024-10-13 00:54:13
    取消