时间间隔表达式
- interval_expr是一个时间间隔表达式,其语法表示为:
INTERVAL expr unit
说明:expr为一个数量值,unit为expr的单位。unit允许的取值和对应的expr取值格式可参考表1。
注:若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_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)