Wyrażenia interwałowe
Wyrażenie interwałowe daje wartość INTERVAL
YEAR
TO
MONTH
lub INTERVAL
DAY
TO
SECOND
.
wyrażenie_interwałowe::=
Opis ilustracji wyrażenie_interwałowe.gif
Wyrażenia expr1
i expr2
mogą być dowolnymi wyrażeniami, które są obliczane na wartości typu danych DATE
, TIMESTAMP
, TIMESTAMP
WITH
TIME
ZONE
lub TIMESTAMP
WITH
LOCAL
TIME
ZONE
.
Czasy i interwały można łączyć zgodnie z zasadami określonymi w tabeli 2-5. Sześć kombinacji, które dają wartości interwałów, jest ważnych w wyrażeniu interwałowym.
Zarówno leading_field_precision
, jak i fractional_second_precision
mogą być dowolnymi liczbami całkowitymi od 0 do 9. Jeśli pominiesz leading_field_precision
dla DAY
lub YEAR
, wówczas baza danych Oracle użyje domyślnej wartości 2. Jeśli pominiesz fractional_second_precision
dla drugiej, wówczas baza danych użyje domyślnej wartości 6. Jeśli wartość zwrócona przez zapytanie zawiera więcej cyfr niż domyślna precyzja, wówczas baza danych Oracle zwróci błąd. Dlatego dobrą praktyką jest określanie precyzji, o której wiesz, że będzie co najmniej tak duża, jak wartość zwracana przez zapytanie.
Na przykład, poniższe wyrażenie odejmuje wartość kolumny order_date
w przykładowej tabeli orders
(wartość datetime) od systemowego znacznika czasu (inna wartość datetime), aby uzyskać wyrażenie wartości interwałowej. Nie wiadomo, ile dni temu zostało złożone najstarsze zamówienie, więc określono maksymalną wartość 9 dla precyzji pola DAY
:
SELECT (SYSTIMESTAMP - order_date) DAY(9) TO SECOND FROM orders WHERE order_id = 2458;
.