日期/时间/时间戳/时间间隔操作符¶
神通数据库中支持的日期/时间/时间戳操作符如下表:
表33神通数据库支持的日期/时间/时间戳/时间间隔操作符
| 名字 | 左操作数类型 | 右操作数类型 | 例子 | 结果 |
|---|---|---|---|---|
| DATE | INT | date '2001-09-28' + 1::int | DATE :2001-09-29 | |
| DATE | FLOAT | date '2001-09-28' + 1.2::float | TIMESTAMP: 2001-09-29 04:47:59 |
|
| DATE | INTERVAL YEAR TO MONTH | date '2001-09-28' + interval '1' year | DATE: 2002-09-28 | |
| DATE | INTERVAL DAY TO SECOND | date '2001-09-28' + interval '1' hour | DATE : 2001-09-28 | |
| DATE | TIME | date '2001-09-28' + time '1:2:3' | TIMESTAMP : 2001-09-28 01:02:03 |
|
| DATE | TIME WITH TIME ZONE | date '2001-09-28' + time with time zone '1:2:3 +2:00' | TIMESTAMP WITH TIME ZONE: 2001-09-28 07:02:03+08:00 | |
| TIME | DATE | time '1:2:3' + date '2001-09-28' | TIMESTAMP: 2001-09-28 01:02:03 |
|
| TIME WITH TIME ZONE | DATE | time with time zone '1:2:3 +2:00' + date '2001-09-28' | TIMESTAMP WITH TIME ZONE: 2001-09-28 07:02:03+08:00 |
|
| TIMESTAMP | INTERVAL YEAR TO MONTH | timestamp '2001-09-28 01:00' + interval '23'year | TIMESTAMP: 2024-09-28 01:00:00 |
|
| TIMESTAMP | INTERVAL DAY TO SECOND | timestamp '2001-09-28 01:00' + interval '23'hour | TIMESTAMP: 2001-09-29 00:00:00 |
|
| TIMESTAMP WITH TIME ZONE | INTERVAL YEAR TO MONTH | timestamp withtime zone '2001-09-28 01:00 +2:00' + interval '23'year | TIMESTAMP WITH TIME ZONE: 2024-09-2807:00:00+08:00 |
|
| TIMESTAMP WITH TIME ZONE | INTERVAL DAY TO SECOND | timestamp with time zone '2001-09-28 01:00 +2:00' + interval '23'hour | TIMESTAMP WITH TIME ZONE: 2001-09-29 06:00:00+08:00 |
|
| INTERVAL YEAR TO MONTH | TIMESTAMP | interval '23'year + timestamp '2001-09-28 01:00' | TIMESTAMP: 2024-09-28 01:00:00 |
|
| INTERVAL DAY TO SECOND | TIMESTAMP | interval '23'hour +timestamp '2001-09-28 01:00' | TIMESTAMP: 2001-09-29 00:00:00 |
|
| INTERVAL YEAR TO MONTH | INTERVAL YEAR TO MONTH | interval '1-11' year to month + interval '1'month | INTERVAL YEAR TO MONTH:+2-00 | |
| INTERVAL DAY TO SECOND | INTERVAL DAY TO SECOND | interval '1' day + interval '1 2:3:4' day to second | INTERVAL DAY TO SECOND:+2 02:03:04 | |
| DATE | INT | date '2001-09-28' - 1::int | DATE : 2001-09-27 | |
| DATE | FLOAT | date '2001-09-28' - 1.2::float | TIMESTAMP: 2001-09-26 19:12:01 |
|
| DATE | DATE | date '2001-09-28' - date '2002-11-12' | INT: -410 | |
| DATE | INTERVAL YEAR TO MONTH | date '2001-09-28' - interval '1' year | DATE: 2000-09-28 | |
| DATE | INTERVAL DAY TO SECOND | date '2001-09-28' - interval '1'hour | DATE : 2001-09-28 | |
| TIME | TIME | time '12:00:00' - time '1:2:3.123456' | INTERVAL DAY TO SECOND +0 10:57:56.876544 |
|
| TIMESTAMP | TIMESTAMP | timestamp '2010-1-1 12:00:00' - timestamp '2011-11-12 1:2:3.123456' | INTERVAL DAY TO SECOND -679 13:02:03.123456 |
|
| TIMESTAMP | INTERVAL YEAR TO MONTH | timestamp '2001-09-28 01:00' - interval '23'year | TIMESTAMP: 1978-09-28 01:00:00 |
|
| TIMESTAMP | INTERVAL DAY TO SECOND | timestamp '2001-09-28 01:00' - interval '23'hour | TIMESTAMP: 2001-09-27 02:00:00 |
|
| TIMESTAMP WITH TIME ZONE | TIMESTAMP WITH TIME ZONE | timestamp with time zone '2010-1-1 12:00:00 +2:00' - timestamp with time zone '2011-11-12 1:2:3.123456 -3:00' | INTERVAL DAY TO SECOND -679 18:02:03.123456 |
|
| TIMESTAMP WITH TIME ZONE | INTERVAL YEAR TO MONTH | timestamp withtime zone '2001-09-28 01:00 +2:00' - interval '23'year | TIMESTAMP WITH TIME ZONE: 1978-09-28 07:00:00+08:00 |
|
| TIMESTAMP WITH TIME ZONE | INTERVAL DAY TO SECOND | timestamp with time zone '2001-09-28 01:00 +2:00' - interval '23'hour | TIMESTAMP WITH TIME ZONE: 2001-09-27 08:00:00+08:00 |
|
| INTERVAL YEAR TO MONTH | INTERVAL YEAR TO MONTH | interval '1-11' year to month - interval '1'month | INTERVAL YEAR TO MONTH: +1-10 | |
| INTERVAL DAY TO SECOND | INTERVAL DAY TO SECOND | interval '1' day - interval '1 2:3:4' day to second | INTERVAL DAY TO SECOND: -0 02:03:04 | |
| INTERVAL YEAR TO MONTH | FLOAT | interval '1-5'year to month * 1.89::float | INTERVAL YEAR TO MONTH: +2-08 | |
| INTERVAL DAY TO SECOND | FLOAT | interval '1 2:3:4.123456' day to second * 1.89::float | INTERVAL DAY TO SECOND: +2 01:14:11.993331 |
|
| FLOAT | INTERVAL YEAR TO MONTH | 1.89::float *interval '1-5'year to month | INTERVAL YEAR TO MONTH: +2-08 | |
| FLOAT | INTERVAL DAY TO SECOND | 1.89::float *interval '1 2:3:4.123456' day to second | INTERVAL DAY TO SECOND: +2 01:14:11.993331 |
|
| / | INTERVAL YEAR TO MONTH | FLOAT | interval '1-5'year to month / 1.89::float | INTERVAL YEAR TO MONTH: +0-08 |
| INTERVAL DAY TO SECOND | FLOAT | interval '1 2:3:4.123456' day to second / 1.89::float | INTERVAL DAY TO SECOND: +0 13:47:01.229341 |
|
| OVERLAPS | (DATE, DATE) | (DATE, DATE) | (date '1993-11-12', date '2001-11-12') OVERLAPS (date '1983-11-13', date '1995-11-12') | t |
| (DATE, INTERVAL YEAR TO MONTH) | (DATE, DATE) | (date '1993-11-12', interval '1-1'year to month) OVERLAPS (date '1983-11-13', date '1995-11-12') | t | |
| (DATE, DATE) | (DATE, INTERVAL YEAR TO MONTH) | (date '1993-11-12', date '2001-11-12') OVERLAPS (date '1983-11-13', interval '1-1'year to month) | f | |
| (DATE, INTERVAL YEAR TO MONTH) | (DATE, INTERVAL YEAR TO MONTH) | (date '1993-11-12', interval '1'year) OVERLAPS (date '1983-11-13', interval '1-1'year to month) | f | |
| (DATE, INTERVAL DAY TO SECOND) | (DATE, DATE) | (date '1993-11-12', interval '11'day) OVERLAPS (date '1983-11-13', date '1995-11-12') | t | |
| (DATE, DATE) | (DATE, INTERVAL DAY TO SECOND) | (date '1993-11-12', date '2001-11-12') OVERLAPS (date '1983-11-13', interval '11'day to hour) | f | |
| (DATE, INTERVAL DAY TO SECOND) | (DATE, INTERVAL DAY TO SECOND) | (date '1993-11-12', interval '10'day) OVERLAPS (date '1993-11-15', interval '-10' day) | t | |
| (TIME,TIME) | (TIME,TIME) | (time '2:00:00', time '3:00:00') OVERLAPS (time '4:00:00', time '6:00:00') | f | |
| (TIME WITH TIME ZONE) | (TIME WITH TIME ZONE) | (time with time zone '2:00:00 +2:00', time with time zone '3:00:00 +2:00') OVERLAPS (time with time zone '4:00:00 +5:00', time with time zone '6:00:00 +5:00') | t | |
| (TIMESTAMP, TIMESTAMP) | (TIMESTAMP, TIMESTAMP) | (timestamp '1993-11-12 0:0:0', timestamp '1993-11-12 2:0:0') OVERLAPS (timestamp '1993-11-12 3:0:0', timestamp '1993-11-12 4:0:0') | f | |
| (TIMESTAMP, INTERVAL YEAR TO MONTH) | (TIMESTAMP, TIMESTAMP) | (timestamp '1993-11-12 0:0:0', interval '1-1'year to month) OVERLAPS (timestamp '1993-11-12 3:0:0', timestamp '2003-11-12 4:0:0') | t | |
| (TIMESTAMP, TIMESTAMP) | (TIMESTAMP, INTERVAL YEAR TO MONTH) | (timestamp '1993-11-12 0:0:0', timestamp '1993-11-12 2:0:0') OVERLAPS (timestamp '1993-11-12 3:0:0', interval '1-1'year to month) | f | |
| (TIMESTAMP, INTERVAL YEAR TO MONTH) | (TIMESTAMP, INTERVAL YEAR TO MONTH) | (timestamp '1993-11-12 0:0:0', interval '1-1'year to month) OVERLAPS (timestamp '1993-11-12 3:0:0', interval '1-1'year to month) | t | |
| (TIMESTAMP, INTERVAL DAY TO SECOND) | (TIMESTAMP, TIMESTAMP) | (timestamp '1993-11-12 0:0:0', interval '11' day) OVERLAPS (timestamp '1993-11-12 3:0:0', timestamp '2003-11-12 4:0:0') | t | |
| (TIMESTAMP, TIMESTAMP) | (TIMESTAMP, INTERVAL DAY TO SECOND) | (timestamp '1993-11-12 0:0:0', timestamp '1993-11-12 2:0:0') OVERLAPS (timestamp '1993-11-12 3:0:0', interval '11'day) | f | |
| (TIMESTAMP, INTERVAL DAY TO SECOND) | (TIMESTAMP, INTERVAL DAY TO SECOND) | (timestamp '1993-11-12 0:0:0', interval '11'day) OVERLAPS (timestamp '1993-11-12 3:0:0', interval '11'day) | t | |
| (TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH TIME ZONE) | (TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH TIME ZONE) | (timestamp with time zone '1993-11-12 0:0:0 +1:00', timestamp with time zone '1993-11-12 2:0:0 +1:00') OVERLAPS (timestamp with time zone '1993-11-12 3:0:0 +3:00', timestamp with time zone '1993-11-12 4:0:0 +2:00'); | t | |
| (TIMESTAMP WITH TIME ZONE, INTERVAL YEAR TO MONTH) | (TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH TIME ZONE) | (timestamp with time zone '1993-11-12 0:0:0 +1:00', interval '1-1'year to month) OVERLAPS (timestamp with time zone '1993-11-12 3:0:0 +3:00', timestamp with time zone '1993-11-12 4:0:0 +2:00'); | t | |
| (TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH TIME ZONE) | (TIMESTAMP WITH TIME ZONE, INTERVAL YEAR TO MONTH) | (timestamp with time zone '1993-11-12 0:0:0 +1:00', timestamp with time zone '1993-11-12 4:0:0 +2:00') OVERLAPS (timestamp with time zone '1993-11-12 3:0:0 +3:00', interval '1-1'year to month); | t | |
| (TIMESTAMP WITH TIME ZONE, INTERVAL YEAR TO MONTH) | (TIMESTAMP WITH TIME ZONE, INTERVAL YEAR TO MONTH) | (timestamp with time zone '1993-11-12 0:0:0 +1:00', interval '1-1'year to month) OVERLAPS (timestamp with time zone '1993-11-12 3:0:0 +3:00', interval '1-1'year to month); | t | |
| (TIMESTAMP WITH TIME ZONE, INTERVAL DAY TO SECOND) | (TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH TIME ZONE) | (timestamp with time zone '1993-11-12 0:0:0 +1:00', interval '1'hour) OVERLAPS (timestamp with time zone '1993-11-12 3:0:0 +3:00', timestamp with time zone '1993-11-12 4:0:0 +2:00'); | f | |
| (TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH TIME ZONE) | (TIMESTAMP WITH TIME ZONE, INTERVAL DAY TO SECOND) | (timestamp with time zone '1993-11-12 0:0:0 +1:00', timestamp with time zone '1993-11-12 4:0:0 +2:00') OVERLAPS (timestamp with time zone '1993-11-12 3:0:0 +3:00', interval '1'hour); | t | |
| (TIMESTAMP WITH TIME ZONE, INTERVAL DAY TO SECOND) | (TIMESTAMP WITH TIME ZONE, INTERVAL DAY TO SECOND) | (timestamp with time zone '1993-11-12 0:0:0 +1:00', interval '1' hour) OVERLAPS (timestamp with time zone '1993-11-12 3:0:0 +3:00', interval '1' day); | f |
操作符OVERLAPS是SQL92标准规定的操作符,它可接收的操作数类型组合已全部列于上表中。操作数表示一个时间段,该时间段的起点为第一个时间,终点为第二个时间。如果操作数中存在INTERVAL YEAR TO MONTH或者INTERVAL DAY TO SECOND 类型,则该时间段的起点仍然是第一个时间,终点为第一个时间加上其后的INTERVAL YEAR TO MONTH或者INTERVAL DAY TO SECOND之后的时间。OVARLAPS返回一个布尔值,表示左操作数表示的时间段和右操作数表示的时间段是否有重叠的部分。