Введение в стандарты языка баз данных SQL

       

Выражения над временем и датами


К выражениям над временем и датой мы относим выражения, вырабатывающие значения типа дата-время и интервал. Выражения дата-время определяются следующими синтаксическими правилами: >

<datetime value expression> ::= <datetime term> |<interval value expression> <plus sign> <datetime term> |<datetime value expression> <plus sign> <interval term> <datetime value expression> <minus sign> <interval term> <datetime term> ::= <datetime factor> <datetime factor> ::= <datetime primary> [ <time zone> ] <datetime primary> ::= <value expression primary> |<datetime value function> <time zone> ::= AT <time zone specifier> <time zone specifier> ::= LOCAL TIME ZONE <interval value expression>

Пояснения: Как видно из описания синтаксиса, сами выражения строятся очень просто - на основе обычных арифметических операций. Снова более интересны первичные составляющие- вызовы функций, возвращающих значение дата-время. Эти вызовы определяются следующим синтаксисом:

<datetime value function> ::= <current date value function> |<current time value function> |<current timestamp value function> <current date value function> ::= CURRENT_DATE <current time value function> ::= CURRENT_TIME [ <left paren> <time precision> <right paren> ] <current timestamp value function> ::= CURRENT_TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]

Видимо, приведенные синтаксические правила не нуждаются в комментариях: можно получить текущую дату, а также текущее время с желаемой точностью.

Синтаксис выражений со значениями типа интервал определяется следующими правилами:

<interval value expression> ::= <interval term> |<interval value expression 1> <plus sign> <interval term 1> |<interval value expression 1> <minus sign> <interval term 1> |<left paren> <datetime value expression> <minus sign> |<datetime term> <right paren> <interval qualifier> <interval term> ::= & lt;interval factor> |<interval term 2> <asterisk> <factor> |<interval term 2> <solidus> <factor> |<term> <asterisk> <interval factor> <interval factor> ::= [ <sign> ] <interval primary> <interval primary> ::= <value expression primary> [ <interval qualifier> ] <interval value expression 1> ::= <interval value expression> <interval term 1> ::= <interval term> <interval term 2> ::= <interval term>

Как видно из приведенных правил, выражения со значениями типа интервал устроены очень просто; почти вся содержательная информация была приведена при обсуждении соответствующего типа данных. Стоит только заметить, что квалификатор интервала указывается для того, чтобы явно специфицировать единицу измерения интервала.



Содержание раздела