Fig. 3.31. Rezultatul funcției DATEADD
Funcția DATEDIFF poate fi utilizată pentru a determina intervalul de timp de la prima valoare setată a datei, orei sau datei / orei până la a doua valoare. Această funcție returnează o valoare de tip BIGINT și are următorul format:
DATEDIFF ( <временной отрезок> DE LA <значение1> PENTRU <значение2> )
DATEDIFF ( <временной отрезок>, <значение1>, <значение2> ), unde <временной отрезок> are aceeași sintaxă ca și funcția DATEADD. Trebuie remarcat următoarele:
- funcția returnează un număr pozitiv dacă <значение2> depășește limita <значение1>, negativ dacă <значение1> depășește limita <значение2>, și zero dacă valorile sunt egale;
- dacă rezultatul calculului este fracțional, se produce o valoare rotunjită;
- o comparație a unei valori de tip DATE cu o valoare de tip TIME este nevalidă;
- În ceea ce privește funcția DATEADD, anumite segmente de timp pot fi utilizate numai cu tipul corespunzător.
De exemplu, pentru cererile depuse de abonat cu contul personal 115705, este necesar să se deducă numărul de săptămâni care au trecut de la data înregistrării cererii până la momentul executării acesteia. Pentru a face acest lucru, puteți utiliza următoarea interogare: SELECT RequestCD, DATEDIFF (WEEKDAY FROM IncomingDate
FOR ExecutionDate) AS Interval de la solicitare WHERE AccountCD = 115705; Rezultatul interogării este prezentat în Fig. 3,32.
De asemenea, puteți să transformați un șir corect format într-un tip de data-dată. De exemplu, o valoare cu un tip de dată de trei valori ale zilei, lunii și anului poate fi obținută după cum urmează:
CAST (ZIUA LUNA ANUL CA DATA), în cazul în care ziua, luna si an poate fi o constantă sau coloane într-un tabel, care conține valoarea zilei, luna sau anul respectiv.
De exemplu, dacă doriți să afișați valori diferite pentru luna și anul tarifelor pentru serviciul de gaze cu codul 2, în legătură cu prima zi a lunii respective, cererea poate arata astfel: SELECT DISTINCT NachislMonth, NachislYear,
CAST (1. NachislMonth, NachislYear as date) ca FirstDay
În cazurile în care Firebird nu poate efectua conversii de tip implicit, trebuie să efectuați o conversie explicită folosind funcția CAST. Această funcție convertește valoarea expresiei specificată de primul argument la tipul specificat de al doilea argument. Sintaxa funcției:
CAST (<выражение> AS <тип данных>).
Domeniile nu pot fi specificate ca tip de date.
Puteți utiliza funcția CAST pentru a compara coloanele cu diferite tipuri de date din același tabel sau din tabele diferite.
Cu CAST, puteți converti dintr-un tip de dată / timp într-altul. În tabel. 3.3 sunt prezentate regulile de transformare [18].
Unde GazServiceCD = 2;
Rezultatul interogării este prezentat în Fig. 3.33.
Fig. 3.33. Rezultatul funcției CAST
În plus, puteți converti tipurile numerice într-un șir și viceversa. De exemplu, pentru a crește numărul de cont al abonatului pentru toți abonații cu 2, trebuie să utilizați următoarea interogare:
SELECT (CAST (AccountCD ca INTEGER) +2) AS nou Ac, Fio
Dacă, de exemplu, trebuie să afișați valorile de încărcare pentru un abonat cu numărul de cont 115705, rotunjit la o valoare întregă, puteți utiliza următoarea interogare:
SELECT NachislFactCD, NachislSum,
CAST (NachislSum AS INTEGER) AS RoundSum
Rezultatul interogării este prezentat în Fig. 3.34.
Fig. 3.34. Rezultatul rotunjirii unui număr la o valoare întregă folosind