DUAL, co to jest … i przy okazji MONTHS_BETWEEN



Select * from DUAL;

I już widzisz co to jest. To ma baza produkcji ORACLE. Jest to tabelka, która ma jedno pole DUMMY, jeden rekord, a w nim X. Po co to?

Bo jak wiesz konstrukcja ogólna, bardzo uproszczona zapytania do bazy jest następująca: SELECT ……. FROM NAZWA_TABELI;

Jeżeli chciałbyś na przykład dostać tą drogą wynik takiego działania: 2 + 4 * 12 to jak? No to piszemy:

SELECT 2 + 4 * 12 FROM ….. Jaką podasz nazwę tabeli, jak podasz jakąś dowolną to wynik działania wyświetli się tyle razy ile jest rekordów w tabeli, a Ty chcesz tylko wynik działania i to raz. No to ktoś wpadł na pomysł utworzenia tabelki DUAL i to zawsze do niej można się w takich sytuacjach odwołać, wynik będzie tylko raz.

Na obrazku zaprezentowałem Ci Marcinie jak wygląda DUAL -> zapytania i wynik z numerem  1. Wykorzystanie tabeli DUAL do uzyskania wyniku działania to zapytanie i wynik z numerem 2.  I jeszcze jeden bajer, który jest dostępny na bazie ORACLE.

Czy wiesz ile jest miesięcy pomiędzy 12 grudnia 2001 a 3 lutym 2015. I nie o to chodzi by obliczyć liczbę dni i później dzielić przez … no właśnie, przez 30 czy przez średnią liczbę dni w miesiącu. Wiemy przecież, iż pomiędzy 30 listopadem 2014 a 31 marca 2015 roku są cztery miesiące i tyle. To na bazie ORACLE działa funkcja MONTHS_BETWEEN, która policzy miesiące pomiędzy datami właśnie tak jak my.

I ile jest tych miesięcy pomiędzy ww. datami …. Prawie 166, zapytanie w i wynik z numerem 3 na obrazku :-)

A po co to, po co takie „szczególarstwo”. Ano po to, iż wyobraź sobie, iż w ustawie masz napisane: termin na ….. 3 miesiące od daty stempla pocztowego. To by sprawdzić czy jesteś w terminie to nie możesz sobie dzielić liczby dni pomiędzy datami przez 30, bo to będzie szacunkowa liczba miesięcy, niejako „na oko” :-)

W. 


Brak komentarzy:

Prześlij komentarz