К выражениям даты-времени мы относим выражения, вырабатывающие значения типа дата-время и интервал. Выражения даты-времени определяются следующими синтаксическими правилами:
datetime_value_expression ::= datetime_term | interval_value_expression + datetime_term | datetime_value_expression + interval_term | datetime_value_expression - interval_term datetime_term ::= datetime_primary [ AT { LOCAL | TIME ZONE interval_value_expression } ] datetime_primary ::= value_expression_primary | datetime_value_function
Как видно из описания синтаксиса, сами выражения строятся очень просто - на основе обычных арифметических операций. Снова более интересны первичные составляющие - вызовы функций, возвращающих значение дата-время. Эти вызовы определяются следующим синтаксисом:
datetime_value_function ::= CURRENT_DATE | CURRENT_TIME [ (precision) ] | LOCALTIME [ (precision) ] | CURRENT_TIMESTAMP [ (precision) ] | LOCALTIMESTAMP [ (precision) ]
Видимо, приведенные синтаксические правила не нуждаются в комментариях: можно получить текущую дату, а также текущее время с желаемой точностью. Отличие функций LOCALTIME и LOCALTIMESTAMP от CURRENT_TIME и CURRENT_TIMESTAMP, соответственно, состоит в том, что первая пара функций не возвращает смещение локального времени от Гринвича.
Синтаксис выражений со значениями типа интервал определяется следующими правилами:
interval_value_expression ::= interval_term | interval_value_expression + interval_term | interval_value_expression - interval_term | (datetime_value_expression - datetime_term) interval_qualifier interval_term ::= interval_factor | interval_term * numeric_factor | interval_term / numeric_factor | numeric_term * interval_factor
interval_factor ::= [ { + | - } ] interval_primary [ <interval qualifier> ] interval_primary ::= value_expression_primary | interval_value_function
Как видно из приведенных правил, выражения со значениями типа интервал устроены очень просто; почти вся содержательная информация была приведена при обсуждении соответствующего типа данных. Стоит только заметить, что квалификатор интервала указывается для того, чтобы явно специфицировать единицу измерения интервала. Поддерживается только одна функция ABS (абсолютное значение), аргументом которой является выражение со значением типа интервал.