[ 
https://issues.apache.org/jira/browse/TRAFODION-3155?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

zhang.lei updated TRAFODION-3155:
---------------------------------
    Description: 
This feature is implemented on the basis of [<ANSI SQL-2003>8.13 overlaps 
predicate, page 
407|http://grigoras.perso.enseeiht.fr/ens/bd/5WD-02-Foundation-2003-09.pdf], 
Here are some descriptions of it:

 *Function*: Specify a test for an overlap between two datetime periods.

 *Format*:

<overlaps predicate> ::= <overlaps predicate part 1> <overlaps predicate part 2>
<overlaps predicate part 1> ::= <row value predicand 1>
<overlaps predicate part 2> ::= OVERLAPS <row value predicand 2>
<row value predicand 1> ::= <row value predicand>
<row value predicand 2> ::= <row value predicand>

*Syntax Rules:*
1) The degrees of <row value predicand 1> and <row value predicand 2> shall 
both be 2.
2) The declared types of the first field of <row value predicand 1> and the 
first field of <row value predicand
2> shall both be datetime data types and these data types shall be comparable.
NOTE 195 — Two datetimes are comparable only if they have the same <primary 
datetime field>s; see Subclause 4.6.2, “Datetimes”.
3) The declared type of the second field of each <row value predicand> shall be 
a datetime data type or
INTERVAL.
Case:
a) If the declared type is INTERVAL, then the precision of the declared type 
shall be such that the interval
can be added to the datetime data type of the first column of the <row value 
predicand>.
b) If the declared type is a datetime data type, then it shall be comparable 
with the datetime data type of
the first column of the <row value predicand>.

 *Example:*

*--<comment> SELECT WHERE (date, date) OVERLAPS (date, date)*

>> select 1 from dual
+> where (date'2018-07-19', date'2018-08-19')
+> overlaps (date'2018-07-20', date'2018-08-20');

(EXPR)
------

1

--- 1 row(s) selected.

 

*--<comment> SELECT WHERE(date, interval) OVERLAPS (date, date)*

>> select 1 from dual
+> where (date'2018-07-19', interval '01-02' year to month)
+> overlaps (date'2018-07-20', date'2018-08-20');

(EXPR)
------

1

--- 1 row(s) selected.

>> select 1 from dual;
+> where (date'2018-07-19', -interval '03-02' year to month)
+> overlaps (date'2018-07-19', date'2018-08-18');


--- 0 row(s) selected.

>>-- <comment> SELECT WHERE (date, interval) OVERLAPS (date, interval)
>> select 1 from dual;
+> where (date'2018-07-20', interval '1' month)
+> overlaps (date'2018-07-19', interval '01-02' year to month);

(EXPR)
------

1

--- 1 row(s) selected.

  was:
This feature is implemented on the basis of [<ANSI SQL-2003>8.13 overlaps 
predicate, page 
407|http://grigoras.perso.enseeiht.fr/ens/bd/5WD-02-Foundation-2003-09.pdf], 
using the following example:

 

 


> New feature: Implementing the OVERLAPS predicate
> ------------------------------------------------
>
>                 Key: TRAFODION-3155
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-3155
>             Project: Apache Trafodion
>          Issue Type: New Feature
>            Reporter: zhang.lei
>            Assignee: zhang.lei
>            Priority: Major
>
> This feature is implemented on the basis of [<ANSI SQL-2003>8.13 overlaps 
> predicate, page 
> 407|http://grigoras.perso.enseeiht.fr/ens/bd/5WD-02-Foundation-2003-09.pdf], 
> Here are some descriptions of it:
>  *Function*: Specify a test for an overlap between two datetime periods.
>  *Format*:
> <overlaps predicate> ::= <overlaps predicate part 1> <overlaps predicate part 
> 2>
> <overlaps predicate part 1> ::= <row value predicand 1>
> <overlaps predicate part 2> ::= OVERLAPS <row value predicand 2>
> <row value predicand 1> ::= <row value predicand>
> <row value predicand 2> ::= <row value predicand>
> *Syntax Rules:*
> 1) The degrees of <row value predicand 1> and <row value predicand 2> shall 
> both be 2.
> 2) The declared types of the first field of <row value predicand 1> and the 
> first field of <row value predicand
> 2> shall both be datetime data types and these data types shall be comparable.
> NOTE 195 — Two datetimes are comparable only if they have the same <primary 
> datetime field>s; see Subclause 4.6.2, “Datetimes”.
> 3) The declared type of the second field of each <row value predicand> shall 
> be a datetime data type or
> INTERVAL.
> Case:
> a) If the declared type is INTERVAL, then the precision of the declared type 
> shall be such that the interval
> can be added to the datetime data type of the first column of the <row value 
> predicand>.
> b) If the declared type is a datetime data type, then it shall be comparable 
> with the datetime data type of
> the first column of the <row value predicand>.
>  *Example:*
> *--<comment> SELECT WHERE (date, date) OVERLAPS (date, date)*
> >> select 1 from dual
> +> where (date'2018-07-19', date'2018-08-19')
> +> overlaps (date'2018-07-20', date'2018-08-20');
> (EXPR)
> ------
> 1
> --- 1 row(s) selected.
>  
> *--<comment> SELECT WHERE(date, interval) OVERLAPS (date, date)*
> >> select 1 from dual
> +> where (date'2018-07-19', interval '01-02' year to month)
> +> overlaps (date'2018-07-20', date'2018-08-20');
> (EXPR)
> ------
> 1
> --- 1 row(s) selected.
> >> select 1 from dual;
> +> where (date'2018-07-19', -interval '03-02' year to month)
> +> overlaps (date'2018-07-19', date'2018-08-18');
> --- 0 row(s) selected.
> >>-- <comment> SELECT WHERE (date, interval) OVERLAPS (date, interval)
> >> select 1 from dual;
> +> where (date'2018-07-20', interval '1' month)
> +> overlaps (date'2018-07-19', interval '01-02' year to month);
> (EXPR)
> ------
> 1
> --- 1 row(s) selected.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to